我想知道如何使用Jquery执行以下操作:
我在表单中有1个文本字段。 只要第一个字符是数字,请将此字段的attr名称更改为“number”。如果第一个字符是字母,请将此attr名称更改为“letter”。
!!当数字或文本被复制粘贴到字段中时,这也必须起作用。
谢谢! 的Jeroen
答案 0 :(得分:6)
将(某些)事件绑定到文本字段: keyup
事件用于在用户修改文本时更新name
属性(包括快捷方式) CTRL+V
复制粘贴), paste
和 mousemove
事件用于处理复制粘贴(拖动,contextmenu)。
$("#your-input").bind("keyup paste mousemove", function() {
var char = this.value.charAt(0); // Use vanilla JavaScript to get the
// first character of the text field
if (/[0-9]/.test(char)) { // Test against a pattern: digit
$(this).attr("name ", "number");
} else if (/[a-zA-Z]/.test(char)) { // Else, pattern: letters
$(this).attr("name", "letter");
} else { // Finally, no name?
$(this).attr("name", "");
}
});
如果您希望默认名称为else {...}
,请移除else if(/[a-zA-Z]/.test(char)) {
,并将else {
替换为 letter
。
答案 1 :(得分:2)
这样的事情:
$("#yourformid").submit(function(){
var input = $("#yourinputid"),
val = input.val();
input.attr("name", /^\d/.test(val) ? "number" :
/^[A-Z]/i.test(val) ? "letter" : "");
});
在所有浏览器中处理粘贴很困难,但是如果您只是在提交表单时设置属性,则无论用户做什么,包括拖放更改到字段,您都会被覆盖。 (显然我假设在提交之前属性是什么并不重要。)