所以我想要一个函数,它像真人一样写入输入(通过触发所有事件)这是我写的代码:
仔细看看“element.value += text_array[i]”部分。
function FillInText(element_id, text){
var element = $("#"+element_id);
element.focus();
element.click();
var kdown = jQuery.Event("keydown");
var kup = jQuery.Event("keyup");
var text_array = text.split("");
for(i = 0; i < text_array.length; i++){
var code = text_array[i].charCodeAt(0);
kdown.which = code;
kup.which = code;
element.trigger(kdown);
element.change();
element.value += text_array[i];
element.trigger(kup);
}
element.blur();
}
这段代码非常适合任何输入,并且在 99% 的情况下都能正常工作。但是有一个输入字段,其值未存储在其“.value”属性中。当我尝试使用它设置/获取值时,没有任何返回。但是,我可以使用 JQuery 的“val()”函数来获取它。
但是“Element.value”的完美之处在于您可以为现有值添加一些值。据我所知,你不能用“val()”来做到这一点。虽然你可以使用:
val(function(index,currentvalue){
return currentvalue + text_array[i];
});
代码将其理解为:previousValue 是“a”,而 addedValue 是“b”。输入字段是“a”,它将“b”加在一起,然后放入输入中。所以它不会添加“a”,而是删除现有的然后添加“ab”。使用“element.value += 'b'”时,它甚至不会触及previousValue,而是将其添加到其中。我想要一个类似的功能:
element.val() += "b";
我希望你能理解我的问题......如果我解释不好,我很抱歉。
我认为您的代码不适用于任何输入。
.value
是一个 DOM 属性,但element
包含一个 jQuery 对象,而不是一个 DOM 元素。您可以通过索引它来获取相应的 DOM 元素:
element[0].value += test_array[i];
您可以使用 jQuery.val()
使用函数添加值:
element.val(function(_, old_value) {
return old_value + test_array[i];
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句