1
我做了一個包含複選框和小輸入字段的表單。我已經編寫了一個腳本來做兩件事:onKeyDown事件不發射
- 如果複選框被選中,並且文本框內沒有值,請將複選框的名稱插入到關聯的文本字段中。
- 如果用戶鍵入到文本框中,並且未勾選相應複選框的複選框,請進行檢查。
- 如果用戶清除文本框,請按刪除/退格/ etc,清除複選框中的檢查。
什麼不工作: *當用戶鍵入到文本字段,複選框不會立即(通常爲2個鍵分別鍵入)出現,即使從邏輯上說,當所調用,如果該複選框未檢查,檢查它。 *當用戶清除文本區域時,使用退格/刪除/等,複選框將保留。
什麼是工作:
- 用戶點擊複選框以自動插入複選框值進入該領域。用戶再次單擊該複選框以清除文本字段中的值。
Here is the related coding being run on JSFiddle
function autocheck(ElementName, SectionName) {
//window.alert('keyword-' + SectionName + '-' + ElementName.toLowerCase());
if (document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked == false)
{
document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked = true
}
if (document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value == '')
{
document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked = false;
}
}
function autofill(ElementName, SectionName) {
ElementName=ElementName.replace(" ", "-");
//window.alert('You got this: ' + ElementName);
if(document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).checked == true)
{
document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value = document.getElementById('keyword-' + SectionName + '-' + ElementName.toLowerCase()).value;
} else {
document.getElementById('keyword-' + SectionName + '-entry-' + ElementName.toLowerCase()).value = '';
}
}
這裏是相關的HTML
<input type="checkbox" name="ufs_split_keywords[]" value="Throw" id="keyword-split-throw" onclick="autofill(this.value, 'split');"> <label for="keyword-split-throw">Throw</label>
<br>
<input type="text" name="ufs_split_keywords_entry[]" id="keyword-split-entry-throw" style="width:100px; float: right;" onkeydown="autocheck('throw', 'split');">
燁這個完美工作。我不明白OnKeyUp和OnKeyDown之間的區別。我還添加了一個OnBlur,以防用戶使用鼠標選擇所有內容,然後使用右鍵單擊 - >刪除選項。無論哪種方式,這工作。謝謝。 –