2010-04-21 4 views
1

У меня есть тег кнопки на моей странице со значением.JQuery Apache - проблема IE

<button class='btn' value='value'>show value</button> 

У меня есть этот код JQuery:

$('.btn').click(function() { 
    var w = 'value = '+$(this).val()+'/text = '+$(this).html(); 
    alert(w); 
}); 

В FF, не проблема результат нормально (дисплей: = значение/текст = показать значение).
Проблема связана с IE8, который отображает разные результаты от моего сервера тестирования и производственного сервера. Сервер тестирования - это моя локальная машина со стандартной установкой XAMPP. Производственный сервер - это сервер, основанный на Linux с apache, php и mysql.

Результат от сервера тестирования в порядке (отображается как FF), результат с производственного сервера не является хорошим (отображение: значение = показать значение/текст: показать значение).

Любая идея, если это apache, которая вызывает ошибку? Я знаю, что есть некоторые проблемы с использованием val(), потому что IE рассматривает его как атрибут, а не значение.

Проблема заключается в том, что изменение jQuery из val() в attr ('value') прекращает работу (эта реализация уже на многих страницах), и я думаю, что было бы намного легче изменить что-то на веб-сервере.

+1

Это известная проблема с IE, посмотрите на это http://www.w3schools.com/tags/tag_button.asp – Lazarus

ответ

0

Это известная проблема на стороне клиента с IE, я не могу адекватно объяснить различия между серверами, другие, чтобы убедиться, что вы тестируете одни и те же браузеры и версии.

From W3C:

Важно: Если вы используете элемент кнопки в HTML форме, разные браузеры будут представлять различные значения. Internet Explorer отправит текст между тегами <button> и </button>, в то время как другие браузеры отправят содержимое атрибута value. Используйте элемент ввода для создания кнопок в форме HTML.

Самый простой способ получить последовательное поведение (в стороне от .attr('value'), который я сильно рекомендую) от этого заменить кнопку с:

<input type="submit" class='btn' value='value' /> 

К сожалению, это не дает вам дисплей значение, однако, если у вас есть кнопка прокси вы можете получить тот же эффект, что и кнопка, это грязно, но это делает IE работы:

<input type="button" class='btnPoxy' value='show value' /> 
<input type="submit" class='btn' value='value' style='display: none;' /> 

JQuery для этого:

$(".btnProxy").click(function() { 
    $(this).next(".btn").click(); 
});