IE не читает реальное значение кнопки! Как обойти это? - PullRequest
3 голосов
/ 15 декабря 2010

У меня есть тег кнопки, как предполагалось, и тег ввода, который имеет текст, отличный от того, что его значение делать, см. Ниже.

<button value="<%=RS("field1")%>" name="change" id="change">Change</button>

Это прекрасно работает в Firefox, но в IE.. dun, dun, dunnnn ... значение кнопки возвращается как слово "изменить", то есть текст, который отображает кнопка.

Я бы обычно использовал и вводил тег, но я думаю, что я могу использовать только тег кнопки

Есть ли способ обойти это?

Ответы [ 6 ]

6 голосов
/ 15 декабря 2010

С w3schools.com :

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

Следовательно, то, что вы должны сделать, это <input type="button" />

3 голосов
/ 15 декабря 2010

Что я обычно делал в подобных ситуациях, так это вставлял информацию в атрибут name, чтобы у вас было

<button name="change:<%=RS("field1")%>" id="change:<%=RS("field1")%>">Change</button>

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

(Обратите внимание, что ваши идентификаторы должны быть уникальными в любом случае.)

2 голосов
/ 15 декабря 2010

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

Учитывая, что вы не можете использовать обычный тег ввода для кнопки, как насчет использования скрытого поля для передачи метода, который вы хотите использовать?

<form action="somepage" method="POST">
    <!-- some fields here -->
    <input type="hidden" name="action" value="<%=RS("field1")%>" />
    <button name="change" id="change">Change</button>
</form>
1 голос
/ 25 марта 2013

Мне кажется, требуемое значение всегда находится в атрибуте кнопки "value" (поскольку это значение, которое предоставляют другие браузеры), так почему бы просто:

<button ... onclick="this.innerHTML=this.value;" ... >
0 голосов
/ 03 сентября 2014

Как я описал выше, не проверяйте значение в паре {button_name, button_value}, вместо этого проверяйте наличие только button_name в наборе ввода без проверки его значения.

0 голосов
/ 15 декабря 2010

IE8 отправляет значение, поэтому проблема только в IE7 (вероятно, тоже 6, но кого это волнует).

В любом случае, один из возможных приемов - поместить значение как часть текста, скрытого, затемсобытие нажатия кнопки (с использованием JavaScript) изменяет текст кнопки на это значение.

Окончательный результат будет выглядеть следующим образом:

<button value="<%=RS("field1")%>" name="change" onclick="this.innerHTML = this.childNodes[1].innerHTML;"><span>Change</span><span style="display: none;"><%=RS("field1")%></span></button>

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

...