0
我最近通過編寫Chrome擴展啓動了我的第一個JavaScript項目。它所做的只是填充頁面上的幾個文本框,然後通過頁面上的「保存/輸入」按鈕提交表單。未檢測到Javascript文本字段值更改
我的問題是我通過textbox.value = "foo"
設置了文本框中的值,但是當我點擊「保存」時,它會顯示「請在以下字段中輸入值」,並返回所有帶有設置值的框。在設置文本之前,我已經嘗試設置焦點並在輸入框上使用點擊方法,但這也沒有奏效。如果我手動點擊一個框,並輸入一個字符,錯誤消失。
我現在的片段看起來是這樣的:
var inputBoxes = document.getElementsByClassName("foo");
for (var j = 0; j < length; j++) {
inputBoxes[j].click();
inputBoxes[j].focus();
inputBoxes[j].value = correctStrings[j];
}
哪裏correctStrings
是我想輸入值的數組。
編輯:
長度= inputBoxes.length
另外的問題是不與填充所述文本框。它們在循環中正確設置,文本出現在框中。
編輯編輯:
這裏就是我的意思(它正在對SmugMug的使用關鍵字提取,因爲他們的API不支持智能畫廊關鍵字)。
相關驗證碼:
var ingredients = [];
var error = false;
for(var i in this.ingredients) {
if (YAHOO.lang.hasOwnProperty(this.ingredients, i)) {
var ingredient = this.ingredients[i].ingredient;
var ingredientDiv = this.ingredients[i].ingredientDiv
YAHOO.util.Dom.removeClass(ingredientDiv,'sm-formitem-error');
// don't send the blank ones
if(
(ingredient.Type == 'Keyword' && ingredient.options.word !== '') ||
(ingredient.Type == 'Gallery' && ingredient.options.AlbumID !== '') ||
(ingredient.Type == 'Geography' && ingredient.options.lat !== '' && ingredient.options.long !== '' && ingredient.options.radius !== '') ||
(ingredient.Type == 'Date' && ingredient.options.dateType == 'Range' && ingredient.options.dateOptions.start !== '' && ingredient.options.dateOptions.stop !== '') ||
(ingredient.Type == 'Date' && ingredient.options.dateType == 'Dynamic') ||
(ingredient.Type == 'Popular')
) {
// check that the dates are in the right order
if(ingredient.Type == 'Date' && ingredient.options.dateType == 'Range') {
var startParts = ingredient.options.dateOptions.start.split("/");
var stopParts = ingredient.options.dateOptions.stop.split("/");
var startDate = YAHOO.widget.DateMath.getDate(startParts[2],startParts[0]-1,startParts[1]);
var stopDate = YAHOO.widget.DateMath.getDate(stopParts[2],stopParts[0]-1,stopParts[1]);
if(YAHOO.widget.DateMath.after(startDate,stopDate)) {
var tmp = ingredient.options.dateOptions.start;
ingredient.options.dateOptions.start = ingredient.options.dateOptions.stop;
ingredient.options.dateOptions.stop = tmp;
}
}
ingredients.push(flattenIngredient(ingredient));
}
else {
if(this.ingredients.length != 1 || 1 == 1) {
YAHOO.util.Dom.addClass(ingredientDiv,'sm-formitem-error');
error = true;
}
}
}
}
var recipe = {
'useUnlisted': this.albumRecipe.useUnlisted,
'maxPhotos': this.albumRecipe.maxPhotos,
'match' : this.albumRecipe.match,
'ingredients': ingredients
};
return (error) ? false : recipe;
什麼是「長度」? – millerbr
你的代碼工作[小提琴](https://jsfiddle.net/1a6vcjx4/)。使用焦點事件的原因是什麼? –
對。所以我的代碼工作正常。問題是網頁無法識別更改並認爲表單爲空。焦點()和點擊()只是測試,看看是否會使窗體識別更改/文本輸入,但它不起作用。 – Phrank