2017-01-10 6 views
1

У меня есть форма внутри всплывающего окна что-то вроде этого:Добавить кнопку не работает в всплывающем окне

<div id="dialog" title="Rezerwacja"> 

     <asp:TextBox ID="imieTextBox" runat="server" placeholder="Imię"></asp:TextBox> 
     <asp:TextBox ID="nazwiskoTextBox" runat="server" placeholder="Nazwisko"></asp:TextBox> 
     <asp:TextBox ID="emailTextBox" runat="server" TextMode="Email" placeholder="Email"></asp:TextBox> 
     <asp:TextBox ID="telefonKomorkowyTextBox" runat="server" TextMode="Phone" placeholder="Telefon kom."></asp:TextBox> 
     <div id="plansza"></div> 
     <asp:Button ID="rezerwujButton" runat="server" Text="Zarezerwuj" OnClick="rezerwujButton_Click" /> 


    </div> 

И JavaScript:

$(document).ready(function() { 
    $("#dialog").dialog({ 
     autoOpen: false, 
     show: { 
      effect: "puff", 
      duration: 1000 
     }, 
     hide: { 
      effect: "explode", 
      duration: 1000 
     } 
    }); 

    $(".opener").on("click", function() { 
     $("#dialog").dialog("open"); 
    }); 
}); 

Так я должен за код:

protected void rezerwujButton_Click(object sender, EventArgs e) 
    { 
     rezerwacje nowaRezerwacja = new rezerwacje(); 

     nowaRezerwacja.imie_klienta = imieTextBox.Text; 
     nowaRezerwacja.nazwisko_klienta = nazwiskoTextBox.Text; 
     nowaRezerwacja.email_klienta = emailTextBox.Text; 
     nowaRezerwacja.nrtel_klienta = telefonKomorkowyTextBox.Text; 

     bazaDC.rezerwacjes.InsertOnSubmit(nowaRezerwacja); 
     bazaDC.SubmitChanges(); 
    } 

И есть проблема, отправьте кнопку «rezerwujButton» не работает. Это похоже на unclickable или что-то в этом роде ... Я нажимаю на него и ничего не делаю ... Не обновляйте страницу или что-то еще ... Когда я собираюсь использовать эту форму без всплывающего окна, она работает, но внутри всплывающего окна нет , Я попытался установить useubmitbehavior = "false", но когда я это сделал, кнопка работала, отправляла что-то, но каждое поле было пустым ... Я имею в виду, когда я пытался получить что-то вроде этого: imieTextBox.Text Он будет пустым ... Всегда ... Любые идеи?

@edit

Я не знаю, что у меня не так? Всегда поля из формы пустые ...

Любой может сказать мне, как я могу исправить эту __PostBack? Потому что я должен сделать что-то неправильно ...

я добавил кнопку UseSubmitBehavior = «FASE» и в функции PageLoad я получил что-то вроде этого:

if (Page.IsPostBack) 
     { 

       rezerwacje nowaRezerwacja = new rezerwacje(); 

       nowaRezerwacja.imie_klienta = imieTextBox.Text; 
       nowaRezerwacja.nazwisko_klienta = nazwiskoTextBox.Text; 
       nowaRezerwacja.email_klienta = emailTextBox.Text; 
       nowaRezerwacja.nrtel_klienta = telefonKomorkowyTextBox.Text; 

       bazaDC.rezerwacjes.InsertOnSubmit(nowaRezerwacja); 
       bazaDC.SubmitChanges(); 

     } 

Например imieTextBox.Text всегда пустой .. Я не знаю, почему ...?

Im done. Я меняю способ получить модальное окно. Я использовал всплывающее окно, которое не перемещало модальный div нигде и не работало.

+1

Это не должно быть 'Нажмите = "rezerwujButton_Click"' вместо 'OnClick = "rezerwujButton_Click"'? –

+0

Что? Что ты имеешь в виду? OnClick = "rezerwujButton_Click" верен –

ответ

1

причиной «ничего «поведение» - это тот факт, что виджет диалогового окна jQuery-UI перемещает элемент DOM, который является con (в вашем случае - $("#dialog")), до body. После этого кнопка отправки не находится внутри тега form, и щелчок по нему не вызывает никаких действий.

Это все равно будет работать, если вся form внутри диалогового содержания:

<div id="dialog" title="Rezerwacja"> 
    <form ...> 
    ... 
    <asp:Button ID="rezerwujButton" runat="server" Text="Zarezerwuj" OnClick="rezerwujButton_Click" /> 
    </form> 
</div> 
+0

Справа, но у меня есть еще одна проблема с этим ... Я не могу добавить форму в div-диалог bucause в site.master Я получил форму уже .... И я не могу добавить больше тега Форма, чем одна ... –

+0

@ ArekWiśniewski - тогда вам нужно сначала обработать нажатие кнопки в javascript и вызвать '__doPostBack' с соответствующими параметрами, что заставит серверную кнопку подумать, что она была нажата. – Igor

+0

Можете ли вы объяснить, как реализовать __doPostBack? И как это работает? –

0

Вы можете попробовать положить ваш метод rezerwujButton_Click в PageMethods

[ScriptMethod, WebMethod] 
public string RezerwujCall() { 
    // logic here 
    return "ok"; 
} 

Затем в ЯШ:

<script type="text/javascript"> 
     function rezerwuj_clicked() { 
      PageMethods.RezerwujCall(function (response) { if(response == "ok"){} }, function(response){ console.log("failed"); }); 
     } 
</script> 

Это потребует, чтобы изменить OnClick="rezerwujButton_Click" в OnClientClick="rezerwuj_clicked()"

 Смежные вопросы

  • Нет связанных вопросов^_^