2016-12-29 2 views
2

У меня возникла проблема с передачей аргумента клиентскому событию OnClientClicking.Как вызвать функцию javascript с аргументом Eval в событии OnClientClick?

Всякий раз, когда я прохожу аргумент Eval, есть постбэк по какой-то причине, даже если я писал "return false;" в OnClientClick код:

OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>' 

Я пробовал разные вещи, в том числе некоторые решения, которые я нашел в подобном вопросов.

Я также попытался это:

OnClientClick='<%# string.Format("toggleContactDetails({0});return false;", Eval("ItemId"))%>' 

или играть с кавычками; Ничего не работает.

Я знаю, что эта функция еще не работает, так как я написал для тестирования:

function toggleContactDetails(itemId) { 
    confirm(itemId); 
} 

В файле JavaScript, и сообщение не появляется.

Любые советы, пожалуйста?

+0

OnClientClick = 'toggleContactDetails ("+ <% = Eval (" ItemId ")%>"); return false; "%> ' –

ответ

2

Вы в вопросе этот образец:

OnClientClick='<%# "toggleContactDetails("+Eval("ItemId")+"); return false;" %>' 

Проблема с этим состоит в том, что она оказывается в браузере, как это:

onclick="toggleContactDetails(Item Name 1); return false;" 

Это нарушение javascript (отсутствующие котировки вокруг Item Name 1), поэтому, когда вы нажимаете кнопку, javascript не работает правильно, а это значит, что return false; не запускается. Это, в свою очередь, означает, что будет запущен postback. Для того, чтобы это работало необходимо вынести правильное javascript:

OnClientClick='<%# "toggleContactDetails(\"" + Eval("ItemId") + "\"); return false;" %>' 

только соответствующая разница в паре мест \".

+0

Да, это работает! Большое спасибо. – cookya

1

Вы должны вернуть значение из функции javascript.

OnClientClick='<%# "return toggleContactDetails("+ Eval("ItemId")+ ");" %>' 

Javascript:

<script type="text/javascript"> 
    function toggleContactDetails(itemId) { 
     return confirm(itemId); 
    } 
</script> 
+0

Вы имеете в виду, что это соглашение? Я использовал только« подтверждение », чтобы проверить, работает ли функция (я думаю, что предупреждение было бы лучше), но функция, которую я хочу использовать, не будет использовать подтверждение при все. – cookya

+0

А, если вам не нужно логическое значение, возвращаемое с 'confirm', то предоставленный answer1429080 ответ имеет смысл. – VDWWD

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