在我的Drupal 7网站上,我有一些签出页面,在这些页面上,我需要检查提交表单后字段值是否更改。如果未更改,我想显示一条消息以提醒客户填写该字段。在某些情况下,该字段可能会保留为空或保持不变,因此我也需要考虑到这一点。
这是我到目前为止得到的:
function extracheck(){
var checkfield = document.querySelector("#edit-continue") !== null;
if (checkfield){
document.getElementById("edit-continue").addEventListener("click", function(event) {
var alertfield = document.getElementById('edit-customer-profile-kompl-info-field-ert-ordernummer-und-0-value');
if (alertfield.value == alertfield.defaultValue) {
event.preventDefault();
$('#edit-customer-profile-kompl-info-field-ert-ordernummer-und-0-value').css("background-color", "#FFFF33");
$('#output-box').addClass('output-box-style');
document.getElementById("output-box").innerHTML = "The highlighted field is empty. Do you really want to continue?<br><br><div class='button tiny' id='btn1'>YES, continue</div><div class='button tiny' id='btn2'>NO, I want to edit the field</div>";
btn1.addEventListener("click", yesfunction, false);
btn2.addEventListener("click", nofunction, false);
return false;
}
}, false);
}
}
extracheck();
function yesfunction(){
document.getElementById('commerce-checkout-form-checkout').submit();
}
function nofunction(){
$('#output-box').css("display","none");
// here I need to "undo" the preventDefault set above
}
首先,我需要检查页面上是否存在此特定的提交按钮(ID为#edit-continue
)。
然后,使用value
和defaultValue
将字段值的初始状态与当前状态进行比较。如果该字段未更改,我将preventDefault
操作绑定到Submit按钮,因此不提交表单。然后,我突出显示该字段,并显示一个DIV框,并询问“突出显示的字段为空。您真的要继续吗?”和2个按钮:“是,我要继续”和“否,我要编辑该字段”。
然后我将2个事件侦听器绑定到按钮,并将它们分配给外部功能nofunction()
和yesfunction()
。如果客户单击“是”,则提交表单。如果他单击否,我将隐藏消息框。我本可以重新加载页面,但是所有其他字段中填写的所有值都将被清除。
因此,我只需要隐藏该框,然后撤消或重置“提交”按钮上的preventDefault动作,即可以正常方式提交表单。
我正在head头,并尽了所有我能想到的。有人在隐藏消息框后如何让我正常提交表单有想法吗?我试图使用removeEventListener并使用在Submit button元素上返回true的函数。
否则一切正常,如果该字段未更改,则打开框,如果更改该字段,则正常提交表单。如果该字段保持不变,并且用户决定继续所有操作并单击“是”,则还将提交表单。