2016-11-11 26 views
-1

HTML如何輸出名稱時輸入的ID

<input id="employee_id" onchange="fill_name(name[1],this.value);" type="text" name="employee_id[1]" /> 
<input id="name[1]" type="text" name="name[1]" /> 

的JavaScript

var EmpID = []; 
var EmpID[7] = "John"; 
var EmpID[8] = "Dave"; 
var EmpID[9] = "Nik"; 

function fill_name(element_id, employee_id){ 
    document.getElementById(element_id).value = EmpID[employee_id]; 
} 

但它不工作,它說:

ReferenceError: EmpID is not defined 
+0

沒有用引號括起來。 –

+0

圍繞什麼? – the7k

+0

請勿在您的onchange處理程序中將'name [1]'用引號引起來。 –

回答

1

只是改變

document.getElementById(element_id).value = EmpID[employee_id]; 

(在element_id周圍沒有引號,因爲丹尼爾說)

而這還不是你如何聲明一個數組。總體而言,這裏是你的代碼應該是怎麼樣的:

var EmpID = []; 
 

 
EmpID[7] = "John"; 
 
EmpID[8] = "Dave"; 
 
EmpID[9] = "Nik"; 
 

 
function fill_name(element_id, employee_id) { 
 
    document.getElementById(element_id).value = EmpID[employee_id]; 
 
}
<input id="employee_id" onchange="fill_name('name[1]',this.value);" type="text" name="employee_id[1]" /> 
 

 
<input id="name[1]" type="text" name="name[1]" />

您也可能想使用oninput而不是onchange

這裏有一個很好的一段代碼,在JavaScript部分添加事件監聽:

var employees = [ 
 
    "John", 
 
    "Jack", 
 
    "Joe", 
 
    "Ian", 
 
    "George" 
 
]; 
 

 
document.getElementById("input").addEventListener("input", function() { 
 
    document.getElementById("output").value = employees[this.value]; 
 
});
<input id="input" type="number" placeholder="Try a number from 0 to 4" /> 
 

 
<input id="output" type="text" />

+0

謝謝,解決了這個問題,我真的很感激。 – the7k

0

你可以存儲你的員工ID在一個對象,並使用eventListeners來代替內聯函數調用。

演示在這裏:

var obj = { 
 
"EmpID[7]": "John", 
 
"EmpID[8]": "Dave", 
 
"EmpID[9]": "Nik" 
 
} 
 

 
var name_field = document.getElementById('name[1]'); 
 
var ID_field = document.getElementById('employee_id'); 
 
ID_field.addEventListener('keyup', fill_name, false); 
 

 
function fill_name() { 
 
    var request = ID_field.value.replace(/\[|\]/g, ''); 
 
    if (obj["EmpID["+request+"]"]) { 
 
    name_field.value = obj["EmpID["+request+"]"]; 
 
    } 
 
}
<input id="employee_id" type="text" name="employee_id[1]" /> 
 

 
<input id="name[1]" type="text" name="name[1]" />

+0

謝謝,我很感激。 – the7k

1

如果你有一個鍵值對id -> name,你可以使用一個對象存儲數據。保持HTML和JavaScript 獨立。一個例如keyup事件可能看起來像如下:

var data = { 
 
    // ... 
 
    7: "Gustav", 
 
    8: "Korben", 
 
    9: "Wolther" 
 
    // ... 
 
}; 
 

 
var id = document.getElementById("id"), 
 
    emp = document.getElementById("name"); 
 

 

 
id.addEventListener("keyup", function() { 
 
    emp.value = data[this.value] || "No name with this id"; 
 
});
<input type="number" id="id"> 
 
<input type="text" id="name">