2016-12-01 3 views
0

発射されませんMaxToolLifeの値はdoubleとして格納されます。ユーザーがフィールドに格納された値より大きい値を入力した場合ToolLife「入力した値が既存の値より大きい」というYes/Noポップアップを表示する必要があります。ボタン送信またはtextchangedイベントです。 現在、私は以下のコードを使用していますが、私はJavascriptアラートを取得していません。 Page.ClientScriptの代わりにJavaScript関数は、私は、ASPを使用していますC#の機能からASP.Net

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if (Convert.ToDouble(txtToolLifeAchieved.Text) > maxToolLife) 
    { 
     Page.ClientScript.RegisterStartupScript(Page.GetType(), "Confirm", "javascript:Confirm();", true); 

     if (hdnconfirm.Value=="Yes") 
     { 
      row["Pcs Produced"] = Convert.ToDouble(txtToolLifeAchieved.Text); 
     } 
     else 
     { 
      txtToolLifeAchieved.Text = "1"; 
      txtToolLifeAchieved.Focus(); 
      return; 
     } 
    } 
    else 
    { 
     row["Pcs Produced"] = Convert.ToDouble(txtToolLifeAchieved.Text); 
    } 
} 

私はまた、 "Page.ClientScript.RegisterClientScriptBlock" & /ScriptManager.RegisterStartupScriptを使用していました。今のところ何も働いていません。コードの背後にあるjavascript関数を呼び出すことができません。いかなる即時の対応も大いに役立ちます。以下に示すように

確認は()である:

function Confirm() 
 
{ 
 
    var confirm_value = document.createElement("INPUT"); 
 
    confirm_value.type = "hidden"; 
 
    confirm_value.name = "confirm_value"; 
 
    if (confirm("The data already exists. Do you want to Overwrite data?")) 
 
    { 
 
    confirm_value.value = "Yes"; 
 
    document.getElementById('<%= hdnconfirm.ClientID %>').value = "Yes"; 
 
    } 
 
    else 
 
    { 
 
    confirm_value.value = "No"; 
 
    document.getElementById('<%= hdnconfirm.ClientID %>').value = "No"; 
 
    } 
 
    
 
    document.forms[0].appendChild(confirm_value); 
 
}

+0

javascriptにConfirmという関数がありますか? ... hmm 'javascript:Confirm();'とにかく間違っています... 'javascript:'接頭辞は何ですか? –

+0

@JaromandaX:はい。ページロードでこれを呼び出すと、確認メッセージが表示されます。しかし、このボタンをクリックすると、これは呼び出されません。 – user340241

+0

'' Confirm''メソッドのコードをお願いします。ありがとうございます。 – xxxmatko

答えて

0

だから、私はあなたの元のコードに固執し、これは、サーバーの方法は次のようになります方法です。

// This is just to illustrate the limit 
private const double MaxToolLife = 100; 


protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    // Check the limit first 
    if (Convert.ToDouble(txtToolLifeAchieved.Text) > MaxToolLife) 
    { 
     // If the hidden field is empty show the confirm 
     // By default the hidden field is empty, it means that user just 
     // pressed the submit button but not the confirmation dialog 
     if (string.IsNullOrWhiteSpace(hdnconfirm.Value)) 
     { 
      ClientScript.RegisterStartupScript(this.GetType(), "Confirm", "Confirm();", true); 
      return; 
     } 

     // If the hidden field is not empty, this postback was made by the confirm 
     // So check for the value of the hidden field 
     if (hdnconfirm.Value == "Yes") 
     { 
      // Handle 'Yes' 
     } 
     else 
     { 
      // Handle 'No' 
     } 
    } 
    else 
    { 
     // The limit is not reached 
    } 
} 

私は上記の特定のコードを省略しました。フォームがどのように見えるか。これは、次のとおりです。右のページでformタグ以前より

<form id="form1" runat="server"> 
    <!-- Hidden field for the confirm result --> 
    <asp:HiddenField ID="hdnconfirm" runat="server" /> 
    <!-- Text box for user input --> 
    <asp:TextBox ID="txtToolLifeAchieved" runat="server"></asp:TextBox> 
    <!-- Submit button --> 
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> 
</form> 

、あなたのjavascript機能を配置ClientScript.RegisterStartupScriptを呼び出すことの最後にスクリプトを追加しますので、それは、formタグの前に行わなければなりませんformタグを使用し、その時刻にConfirm()メソッドを定義してください。これはあなたのjavascriptメソッドです:

<script type="text/javascript"> 
    function Confirm() { 
     if (confirm("The data already exists. Do you want to Overwrite data?")) { 
      document.getElementById('<%= hdnconfirm.ClientID %>').value = "Yes"; 
     } 
     else { 
      document.getElementById('<%= hdnconfirm.ClientID %>').value = "No"; 
     } 

     // Post the form back to server using the '__EVENTTARGET' hidden field 
     var form = document.getElementById("form1"); 

     // Create hidden field 
     var input = document.createElement("input"); 
     input.setAttribute("type", "hidden"); 
     input.setAttribute("name", "__EVENTTARGET"); 
     input.setAttribute("id", "__EVENTTARGET"); 
     input.setAttribute("value", '<%= btnSubmit.ClientID %>'); 

     // Append input to the form element 
     form.appendChild(input); 

     // Submit the form 
     form.submit(); 
    } 
</script> 

確認結果のために別の隠しフィールドを作成する必要はありません。代わりに、確認の直後にname__EVENTTARGETに設定して非表示フィールドを作成する必要があり、その非表示フィールドの値は送信ボタンの名前でなくてはならず、フォームのsubmitメソッドを呼び出すだけでなければなりません。これはサーバへのポストバックを行い、btnSubmit_Clickメソッドが実行される間にがに設定されます。またはNoに設定されます。

関連する問題