【问题标题】:Strange form behaviour inserting extra HTML插入额外 HTML 的奇怪表单行为
【发布时间】:2016-02-15 12:00:07
【问题描述】:

我们看到一个奇怪的问题,在页面加载时,我们在表单提交按钮周围插入了额外的 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']);
}

【问题讨论】:

    标签: php drupal drupal-7 drupal-modules drupal-forms


    【解决方案1】:

    由于我对 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 是在哪里生成的,请告诉我们。

    【讨论】:

    • 更新:在修改 css 文件、加载站点然后恢复为原始未修改 css 后,QA 似乎工作(因为没有生成额外的 html)?!奇怪的行为,但在两个 QA 服务器上都有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多