2015-01-16 44 views
0

我在javascript下面的函數調用執行一些服務器端checkings一個WebMethod:爲什麼我的OnclientClickEvent後無法執行onClick?

<script type="text/javascript"> 
function comprobar() 
{ 
PageMethods.F1 
(
$("input[type=text][id*=txt_nombre_nu]").val(), 
$("input[type=text][id*=txt_numero_empleado]").val(), 
$("input[type=text][id*=combo_empresa_nu]").val(), 
$("input[type=text][id*=txt_ceco]").val(), 
$("input[type=text][id*=combo_gestor_nu]").val(), 
$("input[type=text][id*=combo_crear_datos]").val(), 
    function (msg) 
    { 
    if (msg == "") 
     { 
     alert("Datos correctos"); 
     return true; 
     } 
     else 
     { 
     alert(msg); 
     return false; 
     } 
    }, 
    function (msg) 
    {   
    } 
); 
} 
</script> 

本身似乎正確執行的功能,如果數據不正確,則顯示與該警報正確的數據

問題是,在執行此函數後,我需要執行服務器端代碼的事件OnClick。我知道可以創建另一個PageMethod來執行代碼,問題是需要調用的代碼不是靜態的,所以我不能將它放在WebMethod上。

反正我也做了以下checkings:

這是我一直的事件定義的按鈕:

<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true" 
     OnClientClick="comprobar();return false;" OnClick="btn_mdu_confirmar_Click"/> 

我檢查,如果返回false,那麼不執行btn_mdu_confirmar_Click但如果我改變它爲真實的;它始終在OnClientClickEvent之後執行。那麼,爲什麼不像OnClientClick =「return comprobar();」甚至OnClientClick =「comprobar();」不工作,看起來像它總是返回一個虛假的真值,即使味精是不同於「」?

這是注意到我沒有能夠調試JavaScript代碼,但如果它正確顯示警報我看不到真正的原因,簡單的返回語句會失敗。

希望你能幫助我,謝謝你的時間。

+1

JavaScript函數對象默認返回'void'。你需要在你的函數comprobar()中設置'return true' – Mouser

回答

0

這是關乎你的JS代碼更新的代碼:

function comprobar() 
{ 
PageMethods.F1 
    (
    $("input[type=text][id*=txt_nombre_nu]").val(), 
    $("input[type=text][id*=txt_numero_empleado]").val(), 
    $("input[type=text][id*=combo_empresa_nu]").val(), 
    $("input[type=text][id*=txt_ceco]").val(), 
    $("input[type=text][id*=combo_gestor_nu]").val(), 
    $("input[type=text][id*=combo_crear_datos]").val(), 
    function (msg) 
    { 
     if (msg == "") 
     { 
     alert("Datos correctos"); 
     return true; 
     } 
     else 
     { 
     alert(msg); 
     return false; 
     } 
    }, 
    function (msg) 
    {   
    } 
); 

return true; //now comprobar() always returns true; 
} 

那麼本次更新在你的HTML應該這樣做:

<obout:OboutButton runat="server" ID="btn_mdu_confirmar" Text="Confirmar" CausesValidation="true" 
    OnClientClick="return comprobar();" OnClick="btn_mdu_confirmar_Click"/> 

您可以檢查方法的結果PageMethods.F1和檢查這是真是假,並在comprobar()結束時返回結果。我無法更新我的代碼,因爲我不知道PageMethods.F1如何工作。 (這不在你的文章中)。

相關問題