我们看到一个奇怪的问题,在页面加载时,我们会在表单提交按钮周围插入额外的html。单击按钮并触发#element_validate后,表单将正确显示预期的html输出。
页面加载(在提交按钮周围添加额外的html编码):
<form action="/" method="post" id="quality-banner-form" accept-charset="UTF-8">
<div>
<input type="hidden" name="actionlink" value="node/283">
<div class="form-item form-type-textfield form-item-postcode">
<label for="edit-postcode">Postcode <span class="form-required" title="This field is required.">*</span></label>
<input placeholder="Postcode" type="text" id="edit-postcode" name="postcode" value="" size="60" maxlength="128" class="form-text required uniform-input text">
</div>
<div class="button" id="uniform-edit-submit--2" style="-webkit-user-select: none;">
<span>
Go <input type="submit" id="edit-submit--2" name="op" value="Go" class="form-submit">
</span>
</div>
<input type="hidden" name="form_build_id" value="form-irh9tTAy3p22e2ZobcjpbZcG8MSctgdUI4nqzR4XlcA">
<input type="hidden" name="form_id" value="quality_banner_form">
</div>
</form>
关于element_validate (正确的html):
<form action="/" method="post" id="quality-banner-form" accept-charset="UTF-8">
<div>
<input type="hidden" name="actionlink" value="node/283">
<div class="form-item form-type-textfield form-item-postcode">
<label for="edit-postcode">Postcode <span class="form-required" title="This field is required.">*</span></label>
<input placeholder="Postcode" type="text" id="edit-postcode" name="postcode" value="" size="60" maxlength="128" class="form-text required error uniform-input text">
</div>
<input type="submit" id="edit-submit--3" name="op" value="Go" class="form-submit form-submit-updates">
<input type="hidden" name="form_build_id" value="form-6sZ3K4c1L0ub4tc70A8vD3liiPFBXhjxdRFhwtTu-SQ">
<input type="hidden" name="form_id" value="quality_banner_form">
</div>
</form>
在我们的DEV环境中,没有看到额外的HTML,并且表单在页面加载和提交时按预期显示。我们比较了环境模块和模板文件,它们是相同的。
我们有什么遗漏或我们可以检查的其他任何内容,以查看额外的HTML来自何处?
如果有任何其他信息可能有助于诊断此问题,请告知我们。和我们一起,我是.NET开发人员。
模块文件:
function quality_banner_form($form, &$form_state, $actionLink = '')
{
$pc = @$_REQUEST['postcode'];
if (!$pc) {
$pc = @$_SESSION['postcode'];
}
$form['actionlink'] = array(
'#type' => 'hidden',
'#value' => $actionLink
);
$form['postcode'] = array(
'#type' => 'textfield',
'#title' => 'Postcode',
'#required' => true,
'#default_value' => $pc,
'#attributes' => array('placeholder' => 'Postcode'),
'#element_validate' => array('_quality_validatePostcode')
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Go'
);
return $form;
}
function _quality_validatePostcode($element, &$form_state, $form)
{
if (!preg_match('/[a-z0-9]{2,4} ?[a-z0-9]{2,4}/i', $element['#value'])) {
form_error($element, t('Invalid postcode'));
}
}
function quality_banner_form_submit($form, &$form_state)
{
if ($form_state['values']['postcode']) {
$_SESSION['postcode'] = $form_state['values']['postcode'];
}
drupal_goto($form_state['values']['actionlink']);
}
答案 0 :(得分:0)
由于我对Drupal和时间限制的了解有限;我通过添加新的css规则“解决了”这个问题。
#quality-banner-form div.button span input.form-submit[type="submit"] {
border:none;
color:#ffffff;
text-decoration:none;
padding:5px 10px;
margin:4px 0 0 0;
background-color:#588c14;
font-size:14px;
font-size:1.4rem;
line-height:1.2em;
}
#quality-banner-form div.button span {
background: none;
color: #71A330;
}
如果有人有想法,我仍然想知道额外HTML的生成位置,请告诉我们。