我有以下脚本应该验证表单并在此处提交如下示例:form working
但由于某种原因,它不适用于第一个链接。
我的Javascript代码保持不变:
$("form").submit(function () {
var html = '';
var submitme = true;
$(':radio').each(function() {
nam = $(this).attr('name');
if (!$(':radio[name="'+nam+'"]:checked').length) {
$(':radio[name="'+nam+'"]+label').addClass('error');
if(html.indexOf(nam) < 0){
html += nam +' group not checked' + '</br>';
}
submitme = false;
}
else {
$(':radio[name="'+nam+'"]+label').removeClass('error');
}
});
if(submitme == false){
$('.errorDiv').empty().append(html).show().addClass('error');
}
else{
$('.errorDiv').hide();
}
return submitme;
});
我要做的是验证表格并使任何单选按钮不被选择为红色而不提交表格。一旦用户选择了所有表单无线电,表单就应该提交。
我也有这个代码,一旦选中所有内容就会禁用提交按钮,因此用户无法提交两次:
$("form").submit(function () {
var form = $(this);
form.find("input[type=submit]").attr("disabled", "disabled")
form.find("input[type=submit]").attr("value", "Processing...");
// prevent the user from hitting ENTER on a field to submit again
form.find("input").attr("readonly", true);
document.body.style.cursor = "wait";
});
知道将它放在上一个jquery代码片段中的哪个位置?
答案 0 :(得分:1)
您必须在页面上包含该代码才能生效。
以miscScripts.js
链接的文件无效javascript。
首先是:
<!--
// function to swap inner DIVs in homepage left content
function showDiv(div_number) {
以
结束});
-->
它应该是:(删除页面级别注释标记)
// function to swap inner DIVs in homepage left content
function showDiv(div_number) {
以
结束});
仅供参考我不会在任何文件中看到“提交”代码,您网页上的文件是否存在?
这些是该页面来源的链接:
<script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="theScriptsStyles/miscScripts.js"></script>
<script type="text/javascript" src="theScriptsStyles/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="theScriptsStyles/jquery.hoverIntent.minified.js"></script>
<script type="text/javascript" src="theScriptsStyles/jquery.naviDropDown.1.0.js"></script>
EDIT2:好的,我花了一点时间来查看你的代码,看起来有点奇怪,我在你的目标中做了一些重大的假设并重新编写代码来产生这个:
注意:当用户更正表单时,我使用change事件关闭红色错误。您可以使用它,或根据需要进行修改。
$("form#myform").submit(function (e) {
var myform = $(this); //done this way in case selector has multiple forms
var invalidCount = myform.data('hasinvalidentries'); //check validation
if (invalidCount === 0) { //0 not falsy value as 0 set errors check below
return; // let the event bubble away
}
e.preventDefault(); //not check so prevent submit
var mysubmitButton = myform.find("input[type=submit]");
mysubmitButton.prop("disabled", true).data('buttontext', mysubmitButton.val()).val('processing...');
document.body.style.cursor = "wait";
var html = '';
var submitme = true;
$('input[type=radio]').each(function () {
var nam = $(this).attr('name');
var radioGroup = myform.find('input:radio[name="' + nam + '"]');
if (!radioGroup.is(':checked')) {
radioGroup.next('label').addClass('error');
if (html.indexOf(nam) < 0) {
html += nam + ' group not checked' + '<br />';
}
submitme = false;
}
});
if (submitme) {
$('.errorDiv').hide();
myform.data('hasinvalidentries', 0).submit();
} else {
$('.errorDiv').empty().append(html).show().addClass('error');
return submitme;
}
});
/* Check to set the radio group as no errors when change one as one will have to be selected.
Still possible if I manually using code set all to unselected, but acts on users changes at least.
*/
$('form#myform').on('change', 'input:radio', function () {
var myform = $(this).parents('form'); //done this wa in case selector incudes multiple forms
var errorCount = myform.find('.error').length;
if (errorCount) {
var nam = $(this).attr('name');
myform.find(':radio[name="' + nam + '"]+label').removeClass('error');
var mysubmitButton = myform.find("input[type=submit]");
mysubmitButton.removeProp("disabled").val(mysubmitButton.data('buttontext'));
errorCount = myform.find('.error').length;
myform.data('hasinvalidentries', errorCount);
}
});
以下是该代码的工作示例:http://jsfiddle.net/whNtP/