我正在运行客户端验证javascript,它将在验证数据后通过ajax帖子提交表单。这是javascript:
$(".button").click(function() {
$(".error").hide();
var name = $(":input.name").val();
if ((name == "") || (name.length < 4)){
$("label#nameErr").show();
$(":input.name").focus();
return false;
}
var email = $(":input.email").val();
if (email == "") {
$("label#emailErr").show();
$(":input.email").focus();
return false;
}
var phone = $(":input.phone").val();
if (phone == "") {
$("label#phoneErr").show();
$(":input.phone").focus();
return false;
}
var comment = $("#comments").val();
if ((!comment) || (comment > 100)) {
$("label#commentErr").show();
$("#comments").focus();
alert("hello");
return false;
}
var info = 'name:' + name + '&email:' + email + '&phone:' + phone + '&comment:' + comment;
var ajaxurl = '<?php echo admin_url("admin-ajax.php"); ?>';
alert(info);
jQuery.ajax({
type:"post",
dataType:"json",
url: myAjax.ajaxurl,
data: {action: 'submit_data', info: info},
success: function(response) {
if (response.type == "success") {
alert("success");
}
else {
alert("fail");
}
}
});
$(":input").val('');
return false;
});
四个输入字段是名称,电子邮件和电话的三个文本输入,然后是评论/查询部分的一个文本区域。问题是,如果我将textarea留空或输入超过100个字符,则脚本不会进入if((!comment)||(注释&gt; 100)) 声明。我想知道是否有一个不同的值被分配给textarea当它是空白时阻止代码看到它是空的?
答案 0 :(得分:21)
您需要检查length
的{{1}}属性(此外,您还有一些额外的内容。它们不会破坏任何内容,但不需要)。
comment
目前正在发生的是你正在尝试确定一个给定的字符串是否小于一个数字,这是非常愚蠢的,所以JS声明它是假的。检查if (!comment || comment.length > 100) {
会将其与数字进行比较,这是您希望它执行的操作。
comment.length
有效,因为空字符串是假的,但你认为为空的字符可能不是(例如,带空格的字符串是非空的:{{1} })。使用!comment
消除那个讨厌的空白:
' '
(作为旁注,以上都不需要jQuery,它都是JavaScript)
答案 1 :(得分:2)
您有两个症状:
将字段留空不会触发条件,
输入超过100个字符并不会触发此情况。
其他人已经指出为什么#2没有发生:你需要comment > 100
comment.length > 100
。
第一个很可能是因为字段不是完全空白,而是在其中有一些空格。我们可以使用jQuery&#39; $.trim
(跨浏览器工作,而字符串上的.trim
不能在IE8中工作)删除该空格。所以:
var comment = $.trim($("#comments").val()); // trim removes leading and trailing whitespace
if ((!comment) || (comment.length > 100)) { // Include .length
假设你不想计算领先和尾随空格。
答案 2 :(得分:-1)
if ( comment == '' || comment.length > 100 ) {
答案 3 :(得分:-2)
这里的每个人都犯了一个错误的原因之一,如果我提供一个空字符串,其中包含100个空格,则返回true。
检查空字符串的当前和正确方法是
if (!comment && comment.trim().length > 100)
trim
实际上意味着删除字符串开头和结尾的空格。