Frutik
1024-й
Создание собстенного элемента в QuickForm
попробовал создать новый элемент для QuickForm - кнопку сабмит с дополнительным подтверждением сабмита
для теста сделал такой скрипт:
в результате 2 и 3 кнопки работают так как нада а в первой выскакивает окно конфирма без текста:
такое впечатление что конструктор выполняется два раза и при втором выполнении "убивает" дефаултную строчку
что я не так делаю?
-~{}~ 01.06.05 16:30:
заработало после переписывания конструктора с наводки Frol таким образом
попробовал создать новый элемент для QuickForm - кнопку сабмит с дополнительным подтверждением сабмита
PHP:
require_once 'HTML/QuickForm/submit.php';
/**
* HTML class for a text field
*
* @author Andrew Kornilov <frutik@gmail.com>
* @version 1.0
* @access public
*/
class HTML_QuickForm_confirmed_submit extends HTML_QuickForm_submit
{
// {{{ constructor
/**
* Class constructor
*
* @param string $elementName (optional)Input field name attribute
* @param string $elementLabel (optional)Input field label
* @param mixed $attributes (optional)Either a typical HTML attribute string
* or an associative array
* @param string $warning (optional) Confirmation question
* @access public
* @return void
*/
function HTML_QuickForm_confirmed_submit($elementName=null, $elementLabel=null, $attributes=null, $warning='are you sure?')
{
HTML_QuickForm_submit::HTML_QuickForm_submit($elementName, $elementLabel, $attributes);
echo $warning . '<br>';
$this->setWarning($warning);
} //end constructor
// }}}
// {{{ setWarning()
/**
* Sets warning text for submit button
*
* @param string $warning Warning string
* @since 1.0
* @access public
* @return void
*/
function setWarning($warning)
{
$warn = "if(!confirm('" . $warning . "')){ return false; }";
$this->updateAttributes(array('onclick' => $warn));
} //end func setWarning
// }}}
} //end class HTML_QuickForm_confirmed_submit
PHP:
require_once 'HTML/QuickForm.php';
$form =& new HTML_QuickForm;
$form->registerElementType('confirmedsubmit', 'confirmedsubmit.php', 'HTML_QuickForm_confirmed_submit');
$submit0 =& $form->addElement('confirmedsubmit', 's0', 'Save');
$submit1 =& $form->addElement('confirmedsubmit', 's1', 'Save',null,'Sure 1 ?');
$submit2 =& $form->addElement('confirmedsubmit', 's2', 'Save');
$submit2->setWarning('Sure 2 ?');
$form->display();
PHP:
are you sure?<br><br>are you sure?<br>Sure 1 ?<br>are you sure?<br><br>
<form action="/1/test.php" method="post" name="" id="">
<div>
<table border="0">
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input name="s0" value="Save" type="submit" onclick="if(!confirm('')){ return false; }" /></td>
</tr>
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input name="s1" value="Save" type="submit" onclick="if(!confirm('Sure 1 ?')){ return false; }" /></td>
</tr>
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input name="s2" value="Save" type="submit" onclick="if(!confirm('Sure 2 ?')){ return false; }" /></td>
</tr>
</table>
</div>
</form>
что я не так делаю?
-~{}~ 01.06.05 16:30:
заработало после переписывания конструктора с наводки Frol таким образом
PHP:
function HTML_QuickForm_confirmed_submit($elementName=null, $elementLabel=null, $attributes=null, $warning=null)
{
HTML_QuickForm_submit::HTML_QuickForm_submit($elementName, $elementLabel, $attributes);
$this->setWarning($warning == null ? 'are you sure?' : $warning);
}