2012-01-03 3 views
1

Я пытаюсь получить модальное диалоговое окно JQuery UI после того, как выбран элемент автозаполнения. У меня есть все, что появилось как исключение, но есть код, который запускается после модального диалога. В конце концов, я хочу, чтобы этот диалог всплывал и реагировал на кнопку.JQuery - использование модального диалога во время выбора на автозаполнение

Выберите из автозаполнения:

 select: function(event, ui) { 
     if(ui.item.squad != '0'){ 
      console.info('popup'); 
      var choice=null; 

      $("#dialog-confirm").dialog({ 
       resizable: false, 
       height:140, 
       modal: true, 
       buttons: { 
        Cancel: function() { 
         choice = false; 
         $(this).dialog("close"); 
        }, 
        "Move Shooter": function() { 
         choice = true; 
         $(this).dialog("close"); 

        } 
       } 
      }); 
      if(!choice){ 
       console.info($(this)); 
       $(this).text(""); 
       $(this).val(""); 
       $(this).attr("name", ""); 
       $(this).attr("value", ""); 
       console.info("false"); 
       return; 
      } 
     } 

Большая часть кода была взята из Jquery UI here.

Когда я запускаю этот код, я думал, что это остановит выполнение кода, пока кнопка не было но, как вы видите, here печатается строка, печатающая ложь на консоль.

ответ

0

Ваш код не будет работать, поскольку он выполнит весь блок и вернется. То, что вы хотите todo, определяет функцию, которая выполняется после того, как пользователь сделал свой выбор. По сути, вы сделали бы это, переместив оператор if, который у вас под кодом диалога, к его собственной функции, а затем вызовите эту функцию как часть кода вашего обработчика кнопок.

Пример:

Определить обратный вызов где-то:

function handleDialogResponse(choice) { 
    if(!choice){ 
     console.info($(this)); 
     $(this).text(""); 
     $(this).val(""); 
     $(this).attr("name", ""); 
     $(this).attr("value", ""); 
     console.info("false"); 
    } 
} 

Затем изменить свой диалог код кнопки на что-то вроде этого:

buttons: { 
    Cancel: function() { 
     $(this).dialog("close"); 

     handleDialogResponse(false); 
    }, 
    "Move Shooter": function() { 
     $(this).dialog("close"); 

     handleDialogResponse(true); 
    } 
} 
+0

и ваш мой герой. Спасибо за помощь –

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