解决方案(TRIM LEADING / TRAILING ON BLUR)
$('input[type=text]').blur(function() {
$(this).val($(this).val().trim());
});
原始问题
我需要全局修剪所有输入文本字段中的所有空格。选项1和2不起作用,而选项3确实有效。那是为什么?
// Attach an on-blur event to trim whitespace on all input fields
$('input[type=text]').blur(function() {
alert('Blur Before Val = ' + $(this).val() + ' Length = ' + $(this).val().length);
$.trim($(this).val()); // OPTION 1 DOES NOT WORK
$(this).val().trim(); // OPTION 2 DOES NOT WORK
$(this).val($(this).val().replace(/\s/g,"")); // OPTION 3 WORKS
alert('Blur After Val = ' + $(this).val() + ' Length = ' + $(this).val().length);
});
答案 0 :(得分:1)
$.trim($(this).val()); // OPTION 1 DOES NOT WORK
这个不会更新文本框。此外,它仅删除出现在字符串开头或结尾的那些空格。请参阅this。
$(this).val().trim(); // OPTION 2 DOES NOT WORK
同样,这个不会更新文本框。您可以像$(this).val(newValue)
一样更新文本框的值。此外,它只从开头和结尾删除空格。请参阅this。
$(this).val($(this).val().replace(/\s/g,"")); // OPTION 3 WORKS
这是更新文本框值的正确语法。正则表达式(/\s/g
)匹配每个空格 - 包括单词之间的空格,并用空字符串替换它们。所以,这就是它起作用的原因。