Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Вопрос по скрипту.


Автор: KPEHDEL 28.7.2013, 12:09
Здравствуйте. Есть небольшой скрипт, который проверяет введён ли в поля текст, после чего делает кнопку активной.
Код

<head> 
<script> 
// перечисляем в кавычках значение name всех элементов которые требуется проверять
var text=new Array( 'input','txa' );

// Имя формы.
var f = "document.formName";
 
// name кнопки отправки.
var k = "send";
 
function checkForm() {
    var disable = 0;
    var c = 0;
    
    for( var i = 0; i < text.length; i++ ) { 
        eval( 'if('+f+'.'+text[i]+'.value == "") {disable =+1}' ); 
    }
    c = 0;
    
    if( c != 0) { disable=+1 } 
 
    if( disable != 0 ) {
        eval(f+'.'+k+'.disabled=true');
    } else {
        eval(f+'.'+k+'.disabled=false');
    } 
}
</script> 
</head> 
<body onLoad="eval(f+'.'+k+'.disabled=true');"> 
    <form name="formName" action="/"> 
        <input type="text" name="input" onKeyUp="checkForm()" onBlur="checkForm()"><br> 
        <textarea name="txa" onKeyUp="checkForm()" onBlur="checkForm()"></textarea><br> 
        <input type="submit" name="send" value="Submit"> 
    </form>
</body>


Однако если в имени input будет "/" например, name="Discussion/input", тогда данный скрипт работать не будет.
Подскажите пожалуйста почему и как это можно исправить?

С нетерпением жду ответа, заранее спасибо.

Автор: Sanchezzz 28.7.2013, 13:10
Тогда нужно обратится к этому полю по имени ключа  document.formName['Discussion/input'].value
Так как вы используете eval у вас происходит деление строки на строку)
Зы использовать eval нужно крайне осторожно и разумно,в вашем случаи и без него можно обойтись. 

http://jsfiddle.net/bHgNM/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)