任何人都可以帮我找出为什么这个脚本不起作用?点击提交按钮后,我的表单仍在提交。
以下是代码:
submitadd.submit(function(e){
var submitadd = jQuery('#submitadd'),
yearofmanufacturing = jQuery('#yearofmanufacturing'),
price = jQuery('#price'),
addtext = jQuery('#addtext');
if(yearofmanufacturing.val()==''){
jQuery('#yearofmanufacturing').addClass('bordered2');
jQuery('#yearofmanufacturing').removeClass('styled_select');
jQuery("#yearofmanufacturing").attr("placeholder", "Εισάγετε Χρονολία").placeholder();
e.preventDefault();
return false;
alert('yearof......enter in the if');
}
else {
alert("yearnotempty?");
}
if(price.val()=='') {
jQuery('#price').addClass('bordered2');
jQuery('#price').removeClass('styled_select');
jQuery("#price").attr("placeholder", "Εισάγετε τιμή").placeholder();
e.preventDefault();
return false;
alert('price...enter in the if');
}
if(addtext.val()==''){
jQuery('#addtext').addClass('bordered2');
jQuery('#addtext').removeClass('styled_select');
jQuery("#addtext").attr("placeholder", "Εισάγετε περιγραφή αγγελίας").placeholder();
e.preventDefault();
return false;
alert('add text...enter in the if');
}
alert('addtext = ' +addtext.val());
});
单击提交时,没有任何警报显示。任何帮助都将深表感谢。
注意,约翰
答案 0 :(得分:1)
为了节省空间,你可以这样做:
<强> JQuery的强>
jQuery('#submitadd').submit(function(){
var checks = [jQuery('#yearofmanufacturing'),
jQuery('#price'),
jQuery('#addtext')];
for(var i = 0; i < checks.length; i++){
var x = checks[i];
if(x.val() == ''){
x.addClass('bordered2').removeClass('styled_select');
x.prop("placeholder", "Εισάγετε Χρονολογία");
console.log('Value for ' + x.prop('id') + ' is empty.');
return false;
}
else {
console.log('Value for ' + x.prop('id') + ' is not empty.');
}
}
});
<强> Demo 强>
我已经重写了大部分功能,但它仍然做同样的事情。我已移除e.preventDefault();
,而是使用return false;
。
如果值为空。这也记录到控制台(console.log()
),当您使用 F12 进行调试时,这是可见的
注意阿克苏的答案:
您已在活动中指定 submitadd 变量。您必须将其移到外面才能触发事件处理程序,否则未定义变量,并且代码不起作用。
答案 1 :(得分:0)
您已在事件中指定了submitadd
变量。您必须将其移到外面才能触发事件处理程序,否则未定义变量,并且代码不起作用。
var submitadd = jQuery('#submitadd');
// user fill all fields as it should, so form can be submitted
submitadd.submit(function(e){
var yearofmanufacturing = jQuery('#yearofmanufacturing'),
price = jQuery('#price'),
addtext = jQuery('#addtext');
...
答案 2 :(得分:0)
改变这个:
submitadd.submit(function(e){
到此:
jQuery('#submitadd').submit(function(e){
在您的情况下,变量submitadd
在声明之前已被使用。
或者您可以在提交前声明:
var submitadd = jQuery('#submitadd')
submitadd.submit(function(e){
答案 3 :(得分:0)
解决方案:将var submitadd = jQuery('#submitadd');
移出您的功能!
我会向你推荐一些东西:
使用您的jQuery变量:
您可以多次编写yearofmanufacturing
jQuery('#yearofmanufacturing')
命名约定:
如果您要声明jQuery对象,我建议您使用$price
之类的变量名,而不是price
。
不要写无法访问的代码:
您正在尝试在返回内容后调用alert()。这没有任何意义。
不要滥用alert()来解决调试问题:
使用console.log()
,console.debug()
,console.info()
和console.warn()
获得最佳调试经验。
Crossbrowser支持:
Internet Explorer&lt; = 8不知道.preventDefault().
对此类内容感到满意:
(e.preventDefault) ? e.preventDefault() : e.returnValue = false;