My apologies, you're right. I put together a quick test script and verified
that button elements do not always return the correct result when calling
isChecked(). In my test, using Chrome for Mac the button element did not
return a value when submitted, which is required by isChecked().

However, I don't think this is entirely ZF's fault.

According to w3schools.com, different browsers return different values when
button elements are clicked.

Important: If you use the button element in an HTML form, different browsers
> will submit different values. Internet Explorer will submit the text between
> the <button> and </button> tags, while other browsers will submit the
> content of the value attribute. Use the 
> input<http://www.w3schools.com/tags/tag_input.asp> element
> to create buttons in an HTML form.


http://www.w3schools.com/tags/tag_button.asp

<http://www.w3schools.com/tags/tag_button.asp>I suggest following their
recommendation and using input elements instead of buttons, unless you
absolutely need them to be buttons:

$form->addElement('submit', 'go_submit', array(
    'label' => 'Submit'
));

I verified that submit elements do behave as expected when calling
isChecked().

--
Hector


On Mon, Dec 21, 2009 at 11:21 PM, umpirsky <[email protected]> wrote:

> О.К. I'm using buttons (type="submit").
>
> Does for you this method returns opposite value then expected?
>
> Regards,
> Saša Stamenković
>
>
> On Mon, Dec 21, 2009 at 6:04 PM, Hector Virgen [via Zend Framework
> Community] <[hidden 
> email]<http://n4.nabble.com/user/SendEmail.jtp?type=node&node=976764&i=0>
> > wrote:
>
>> That's because you can have two buttons with the same name but have
>> different values. Only if the value matches will it be considered clicked.
>>
>> Also, with inputs (type=submit), the value and the label are the same
>> thing. To make your button say "OK", its value should be "OK". When the
>> button is clicked, the $_POST data will contain the value "OK" for the
>> button. In ZF, that's why $element->setLabel() affects the value of the
>> submit input.
>>
>> When it's not clicked, there may still be another input (hidden?) that
>> sets the value to an empty string. This is why the label is tested against
>> the value.
>>
>> --
>> Hector
>>
>>
>> On Mon, Dec 21, 2009 at 6:31 AM, umpirsky <[hidden 
>> email]<http://n4.nabble.com/user/SendEmail.jtp?type=node&node=976348&i=0>
>> > wrote:
>>
>>>
>>> Hi.
>>>
>>> For me, isChecked method works only after I set my buttons
>>> (type="submit")
>>> have same value for label and value attribs.
>>> Also, it returns opposite value then expected, false when button is
>>> clicked!
>>>
>>> Lets take a look at buton/submit isChecked method:
>>>
>>> /**
>>>  * Has this submit button been selected?
>>>  *
>>>  * @return bool
>>>  */
>>> public function isChecked()
>>> {
>>>        $value = $this->getValue();
>>>
>>>        if (empty($value)) {
>>>                return false;
>>>        }
>>>        if ($value != $this->getLabel()) {
>>>                return false;
>>>        }
>>>
>>>        return true;
>>> }
>>>
>>> pretty odd, huh? I don't know why it is implemented this way, but I
>>> patched
>>> it to return opposite value, and it works now. Why label and value need
>>> to
>>> have same value at all?
>>>
>>> Anyone with same behaviour?
>>> --
>>> View this message in context:
>>> http://n4.nabble.com/Buttons-and-isChecked-method-tp976255p976255.html
>>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>>
>>
>>
>
> ------------------------------
> View this message in context: Re: [fw-general] Buttons and isChecked
> method<http://n4.nabble.com/Buttons-and-isChecked-method-tp976255p976764.html>
>
> Sent from the Zend Framework mailing list 
> archive<http://n4.nabble.com/Zend-Framework-f634138.html>at Nabble.com.
>

Reply via email to