2012-12-07 6 views
3

У меня есть HTML-форма с некоторым статическим текстовым полем и кнопка, которая создаст динамические текстовые поля. Теперь, когда нажата кнопка, я хочу, чтобы новый созданный ящик был сфокусирован. Я использую метод focus(), но он не работает. Другое дело, у меня есть метод OnFocus(), который изменит цвет фона, который работает в статических коробках, но не в динамических коробкахjavascript dynamic textbox change focus

function addPhone(){ 
try{ 
    var phone = document.getElementById("phone"); 
    phone.appendChild(document.createElement("Phone"+noOfPhones)); 

    var textbox = document.createElement("input"); 
    textbox.setAttribute("type", "textbox"); 
    textbox.setAttribute("id","phone"+noOfPhones); 
    textbox.setAttribute("name","phone"+noOfPhones); 

    textbox.setAttributte('onFocus','onFocus(this);'); 
    textbox.style.background="lightgrey"; 

    document.getElementById("phone").appendChild(textbox); 
    phone.appendChild(document.createElement("br")); 

    textbox.focus(); 

    noOfPhones++; 
}catch(err){ 
    alert(err); 
} 

} 

function onFocus(element){ 
element.style.background = "lightgrey"; 
} 

Пожалуйста, помогите. Я новичок в JS. Благодаря

+0

Тьфу, что это такое 'попробовать catch' для? Надеюсь, это не останется в вашем коде. –

+0

@JuanMendes Определенно нет. Я новичок в JS, поэтому пытаюсь поймать ошибки. –

+0

Ваша ошибка появится в консоли, нет необходимости в try catch –

ответ

1

Try:

<div id="phone"></div> 
<input type="button" onclick="addPhone()" value="Add"/> 
<script type="text/javascript"> 
var noOfPhones=0; 
function addPhone(){ 
    try{ 
     noOfPhones++; 
     var phone = document.getElementById("phone"); 
     phone.appendChild(document.createTextNode("Phone :"+noOfPhones)); 
     var textbox = document.createElement("input"); 
     textbox.setAttribute("type", "textbox"); 
     textbox.setAttribute("id","phone"+noOfPhones); 
     textbox.setAttribute("name","phone"+noOfPhones); 
     textbox.setAttribute('onfocus','onFocus(this, true);'); 
     textbox.setAttribute('onblur','onFocus(this, false);'); 
     textbox.style.background="white"; 
     document.getElementById("phone").appendChild(textbox); 
     phone.appendChild(document.createElement("br")); 
     textbox.focus(); 
    }catch(err){ 
     alert(err); 
    } 
} 

function onFocus(element, hasFocus){ 
if(hasFocus) 
    element.style.background = "lightgrey"; 
else 
    element.style.background = "white"; 
} 
</script> 
+0

Это не работает. В новом текстовом поле отсутствует курсор. –

+0

Я решил это довольно необычно. Если я помещаю функцию addPhone() в html-файл, она работает, но если я переведу ее во внешний файл main.js, она не работает. Какие-либо предложения? –

+0

Я не знаю, почему это произошло, но я код отлично работает (со всеми скриптами во внешнем файле) в firefox. Поэтому я очистил кеш в Chrome, и теперь он работает и в Chrome. –