Список радиокнопок OnClick запускает из текстовой области, давая другой результат для проверки - PullRequest
0 голосов
/ 09 августа 2011

Когда я нажимаю на текст переключателя, OnClick срабатывает и показывает выбранную в данный момент кнопку как ПРОВЕРЕНО. Когда я нажимаю прямо на кнопку радио, она срабатывает и показывает кнопку, которую я только что нажал как ПРОВЕРЕНО. Я ожидаю, что текст или кнопка будут действовать так же. Есть ли способ распознать эту разницу?

Вот список моих радионов:

Select Mode:
<asp:RadioButtonList ID="RadBtnMode" runat="server" AutoPostBack="True" 
    BackColor="#CCCCFF" BorderStyle="Groove" BorderWidth="3px" Width="130px" 
    Height="16px" RepeatDirection="Horizontal" cssClass="radioWrap">
    <asp:ListItem Enabled="False" Selected="True">Add</asp:ListItem>
    <asp:ListItem Enabled="False" Value="Search">Search</asp:ListItem>
    <asp:ListItem Enabled="False">Edit</asp:ListItem>
</asp:RadioButtonList>

Во время загрузки страницы я включаю кнопки в зависимости от пользователя и настраиваю это окно подтверждения:

RadBtnMode.Attributes.Add("onclick", "return ConfirmAdd()")

Который называет это Java

<script type="text/javascript" language="javascript">
function ConfirmAdd() {
   var radBtn = document.getElementsByName("RadBtnMode");
   if (radBtn[1].checked) {
      return confirm('Switching to Add Mode will clear all data!\rAre you sure you?');
      }
   }
</script>

Когда я нажимаю в пределах круга переключателей, он делает то, что я хочу, и предупреждает пользователя, что я очищу экран, потому что он переключается в режим добавления. Когда я нажимаю на текст кнопки «Поиск» и «Добавить» является текущим выбором, он считает «Добавить» проверяемым и выдает предупреждение. Затем он запускается во второй раз и работает как ожидалось.

Отредактировано для включения вывода HTML

<table id="RadBtnMode" class="radioWrap" onclick="return ConfirmAdd()" border="0" style="background-color:#CCCCFF;border-width:3px;border-style:Groove;height:16px;width:130px;">
<tr>
<td><input id="RadBtnMode_0" type="radio" name="RadBtnMode" value="Add" checked="checked" /><label for="RadBtnMode_0">Add</label></td>
<td><input id="RadBtnMode_1" type="radio" name="RadBtnMode" value="Search" onclick="javascript:setTimeout('__doPostBack(\'RadBtnMode$1\',\'\')', 0)" /><label for="RadBtnMode_1">Search</label></td>
<td><span disabled="disabled">
<input id="RadBtnMode_2" type="radio" name="RadBtnMode" value="Edit" disabled="disabled" onclick="javascript:setTimeout('__doPostBack(\'RadBtnMode$2\',\'\')', 0)" /><label for="RadBtnMode_2">Edit</label></span></td>
</tr>
</table>

1 Ответ

0 голосов
/ 09 августа 2011

Мне кажется, что основная проблема связана с кодом на стороне сервера (подтверждение на самом деле спрашивает пользователя, хочет ли он войти в «режим добавления»). Также может быть проблема с прикреплением события onclick к самой таблице - это может привести к срабатыванию даже до завершения переключения с одной радиокнопки на другую.

Возможно, включить соответствующую часть того, что происходит в результате переключения между двумя переключателями.

...