0

У меня есть раскрывающийся список, и я хотел бы вызвать окно подтверждения javascript в выбранном событии с заменой выпадающего списка. Проблема в том, что я не знаю, как вызвать окно подтверждения javascript перед выполнением кода C# события selectedindexchange. Мой .aspx код:Выполнить подтверждение javascript в выпадающем списке onSelectedIndexChanged Event

OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged" 

Я хотел бы сделать что-то вроде:

OnSelectedIndexChanged = "return confirm('Are you sure you want to change the cause code?');" 



OnSelectedIndexChanged ="ddlCauses_SelectedIndexChanged" 

Однако я не думаю, что я могу назначить onSelectedIndexChanged двух разных вещей ... Как я могу позволить для подтверждения javascript, а затем код C# выполняется, если yes выбрано?

+0

Возможный дубликат [DropdownList autoposback после подтверждения клиента] (http://stackoverflow.com/questions/73748/dropdownlist-autoposback-after-client-confirmation) – Ian

+0

Это почти то же самое, однако, когда пользователь нажимает YES , я бы хотел, чтобы код onSelectedIndexChanged запускался. Вместо этого он ничего не делает, кроме изменения выпадающего списка ... Любая помощь в том, как это сделать? – user2030579

ответ

1

Если вы должны были использовать JQuery вы можете сделать следующее:

$("#yourSelectId").change(function(event){ 
    event.preventDefault(); //This makes the standard event not happen 
    if(confirm('text')) 
     //do something... 
}); 
0

Если я правильно

На стороне сервера понимаю, вы бы заполнить ваш DropDown и настройки обработчика событий

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      uiItems.Items.Add(new ListItem("", "")); 
      uiItems.Items.Add(new ListItem("One", "One")); 
      uiItems.Items.Add(new ListItem("Two", "Two")); 
      uiItems.Items.Add(new ListItem("Three", "Three")); 
      uiItems.Attributes.Add("onChange", "confirmfunction();"); 
     } 
    } 

    protected void ddlCauses_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     uiText.Text = uiItems.SelectedItem.Text; 
    } 

На странице aspx у вас есть

<asp:DropDownList runat="server" ID="uiItems" OnSelectedIndexChanged="ddlCauses_SelectedIndexChanged"> 
</asp:DropDownList> 

<script type="text/javascript"> 
    function confirmfunction() { 
     if (confirm("Make this change?")) { 
      __doPostBack('uiItems', ''); 
     } 
    } 
</script> 

Предостережение об этом означает, что исходное значение поля выбора не будет восстановлено, если вы выберете «Отмена» в строке подтверждения.

+0

В настоящее время я использую: onChange = "DisplayConfirmation();" OnSelectedIndexChanged = "ddlCauses_SelectedIndexChanged" Однако, когда я ударил отмену в поле подтверждения, он выполняет код C#, который у меня есть под методом ddlCauses_SelectedIndexChanged. Если я ударил да, он делает обратную передачу, но ничего не происходит. Я хотел бы, чтобы обратное произошло, то есть когда пользователь набрал ДА, тогда выполняется код в selectedIndexChanged, и когда пользователь нажимает «НЕТ», ничего не происходит (просто обратная передача будет делать) – user2030579

+0

вы можете добавить свой код aspx? – Joe

+0

Я действительно просматривал код и видел, что мне просто нужно что-то изменить в функции javascript. У меня было: Я разместил «!» в выражении if, чтобы сделать обратное. Вы, ребята, вдохновляющие: D – user2030579