действие onclick на кнопку работает только для одного условия - PullRequest
0 голосов
/ 26 августа 2011

Я пишу php-приложение с javascript и настраиваемой кнопкой.Проблема в том, что при нажатии кнопки, независимо от нажатия кнопки «да» или «отмены», по умолчанию выполняется функция «да».Не могли бы вы помочь мне найти ошибку.

Код php:

<script type="text/javascript" language="javascript" src="javascript/access1.js"></script>
<form name="form_delete" id="form_delete" action="" method="POST" class="access">
|
|
|
<input type="hidden" name="deleteinstanceaction" value="1" />
</form>
<a id="_delete_btt" class="button" onClick="confirmDelete()">Delete</a>
<img class="ajaxload" style="display:none;" id="ajaxld" src="images/ajax-loader.gif"/>

Edit1 Код JavaScript

function confirmDelete() {
var agree=confirm("Are you sure you wish to continue? This will remove the selected item permamently!");
if (agree)
return true ;
else
return false ;
}

Можетпроблема связана с AJAX?если я использую обычную кнопку, то этот javascript работает нормально, например, в приведенном ниже случае он отлично работает как для «да», так и для «нет». Нажмите

<input type="submit" name="delete_state" value="Delete selected state" onClick="confirmDelete()">

Edit2 Код в.Файл js:

    $(document).ready(function() {
Access.initEventHandlers(); });

   var Access = {
   initEventHandlers : function(){
    if($('#_delete_btt')){
        $("#_delete_btt").click(function(e){
            Access.processSubmit();
        });
    }
    processSubmit: function (event) {
        $('#_delete_btt').hide();   
        $('#ajaxld').show();
        setTimeout("Access.formsub()",500);
    },
    formsub: function () {
        var url = 'php/corecontroller.php?ts='+new Date().getTime();
        $.post(url, $('#form_delete').serialize(), Access.oncomplete,"json");
    },
    oncecomplete:function(data,textStatus){
        if(textStatus == "success"){
                if(data.result == "1"){
                    //sucessful
                    $('#ajaxld').hide();
                    htmlstr += "Deleted";
                }
                            }
                    }
             }

Не могли бы вы предложить, как действовать дальше?

Ответы [ 2 ]

0 голосов
/ 26 августа 2011

Насколько я знаю, возвращение false в Javascript не препятствует переходу по ссылке, если определен атрибут href.

Поскольку это не ваш случай, я бы определил для атрибута href значение #:

<a href="#" id="_delete_btt" class="button" onClick="confirmDelete()">Delete</a>
0 голосов
/ 26 августа 2011

У вас есть случайный обработчик кликов?Обычно возвращение false действительно отменяет навигацию ... но я не думаю, что это отменяет обработчик щелчков при таком прикреплении.

Итак, если вы сделали что-то вроде ..

$("#_delete_btt").click(submitTheForm); 

или

document.getElementById('_delete_btt').onclick(submitTheForm)

в предыдущем пункте, это, вероятно, все еще отправит форму как нет.прослушивание «могу ли я продолжить» с другого связанного обратного вызова.Предполагая, что это так, свяжите функцию с тегом «a», который подтвердит, а затем обработайте на основе ответа пользователя.

Редактировать:

На основе нового кода, который вы опубликовали,нам просто нужно изменить поток программы.Либо вставьте подтверждение в обратный вызов щелчка:

    $("#_delete_btt").click(function(e){
        if(confirmDelete()){
            Access.processSubmit();
        }
    });

, либо введите код для обработки отправки в Подтверждение удаления:

function confirmDelete() {
    var agree=confirm("Are you sure you wish to continue? This will remove the selected item permamently!");
    if (agree){
        Access.processSubmit();
        return true ;
    } else {
        return false ;
    }
}

В любом случае происходит то, что, как я подозревал, происходитфакт происходит.Событие click срабатывает независимо от того, возвращает ли обратный вызов значение false, что также приводит к отключению processSubmit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...