我有下面的jQuery代码,我正在使用它进行表单验证,它可以工作,但Typescript不喜欢它,我是Javascript的菜鸟(typescript远远超过noob)。
有没有其他方法可以在不使用长度的情况下成功地编写下面的代码?
$('input[required], select[required], textarea[required]').on('change, input', function(e) {
var rc = 0;
$('[required]').each(function() {
if($(this).val().length === 0) {
rc++;
}
});
if(rc === 0) {
$('button').prop("disabled", false);
} else {
$('button').prop("disabled", true);
}
});
发布于 2018-08-03 05:00:40
如果你坚持不检查长度,可以试试if(!$(this).val())
,而不是if($(this).val().length === 0)
。这是检查字符串是否为空的另一种方法,因为在JavaScript中,空字符串是一个“False值”。
发布于 2018-08-03 05:01:22
您可以只检查空字符串,因为这无论如何都会计算为false。if(!$(this).val())
或仅使用!!$(this).val()
返回布尔值
所以你的代码可能是这样的
$('input[required], select[required], textarea[required]').on('change, input', function(e) {
$('[required]').each(function() {
var disabled = !!$(this).val();
if(disabled) return false;
});
$('button').prop("disabled", disabled);
});
发布于 2018-08-03 09:45:11
您应该首先对值执行trim
操作(删除所有尾随空格),以确保它不仅仅是空格。
if(!$(this).val().trim()){
//String is null, empty, or only spaces
}
演示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="inputToCheck"><button onClick="check()">Check</button>
<p/>
<span id="result"></span>
<script>
var inputToCheck = $('#inputToCheck');
var result = $('#result');
function check(){
if(!inputToCheck.val().trim()){
alert("Invalid input!");
result.html("<b style='color: red;'>Input is not valid (empty or only whitespace).</b>");
} else {
result.text("Input is not null, empty, or only white space.");
}
}
</script>
https://stackoverflow.com/questions/51661952
复制相似问题