Проверка строки в Firefox - PullRequest
0 голосов
/ 10 июня 2009

Я использую

var txtname=document.getElementById('<%=txtname.ClientID%>').value;    
if (txtName == "") ....

но в FF это не работает. Это условие никогда не станет правдой. Даже если это не имеет значения. В IE и Chrome работает нормально.

Может кто-нибудь дать мне знать, как это решить .....

Ответы [ 6 ]

0 голосов
/ 26 июня 2012

Попробуйте этот код

if ( (typeof txtName =="undefined") || (txtName.length==0) )

0 голосов
/ 10 июня 2009

Вы должны проверить консоль ошибок ff.

Нажмите CTRL + Shift + J и проверьте, произошла ли ошибка.

Также FF Plug in Firebug может помочь вам в отладке javascript. Он предоставляет режим отладки, подобный ide's do.

И <%=...%> позволяет использовать выражение Javacode в JSP. Вы уверены, что это правильный идентификатор, который позволяет использовать document.getElementById?

0 голосов
/ 10 июня 2009

Хотя это может не решить проблему, вы можете изменить сравнение на:

if (!txtName)
  ....

Это будет успешным, если txtName имеет значение null, undefined или пустую строку.

0 голосов
/ 10 июня 2009

Убедитесь, что у вас нет 2 элементов с одинаковым идентификатором (или именем! .. читайте ниже).

  • Во-первых, если у вас есть "txtname" и "txtName" в вашем документе, и вы используете getElementById('txtName'), вы можете получить неправильный элемент в IE. Проверьте это

  • Кроме того, IE обрабатывает имя элементов как идентификатор. Проверьте это

  • Наконец, обязательно проверьте вывод html вашей страницы с view-source, чтобы увидеть, что вернул <%=txtname.ClientID%>. Возможно, это пустая строка или что-то, чего вы не ожидали.

0 голосов
/ 10 июня 2009

Похоже, вы используете какой-то язык на стороне сервера, смешанный с javascript.

Что на самом деле оценивает txtname.ClientID и что находится на вашей странице.

Весьма вероятно, что вы не выбираете фактический элемент с помощью вызова document.getElementById.

Chrome и IE может справиться с этим одним способом (вернуть пустую строку при попытке доступа к значению)

Хотя Firefox может справиться с этим другим способом (вернуть ноль, вернуть ошибку при попытке получить значение из нулевого объекта и остановить обработку javascript).

Чтобы увидеть, как это работает, попробуйте открыть файл ниже в Firefox. Первые две попытки (при наличии нулевой проверки) будут правильно сообщать о найденных или не найденных условиях.

Со вторыми двумя попытками (когда проверка нуля не установлена), первая (найденный элемент) работает нормально, но вторая не удалась, потому что document.getElementById возвращает ноль, и firefox не знает, как продолжить с этого ошибка.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>CSS Reset</title>


</head>
<body>
<input id="value1" type="text" value="value1"/>

<script language="javascript">

alert('finding value1 with null check');
var element = document.getElementById('value1');
if ( element == null ){
    alert('not found');
}
else{
    var txtname = element.value;
    alert(txtname);
}

alert('finding value2 with null check');
var element = document.getElementById('value2');
if ( element == null ){
    alert('not found');
}
else{
    var txtname = element.value;
    alert(txtname);
}


alert('finding value1 without null check');
var txtname = document.getElementById('value1').value;
alert(txtname);

alert('finding value2 without null check');
txtname = document.getElementById('value2').value;
alert(txtname);

alert('finished');
</script>

</body>
</html>
0 голосов
/ 10 июня 2009

используйте === вместо ==.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...