2009-11-02 5 views
5

Мне нужно закодировать доменное имя (IDNA) для конкретного регистратора, используя акценты.Измените поле ввода перед отправкой

У меня есть простое поле ввода:

<input type="text" id="idndomain" name="sld[0]" size="40" /> 

Моя функция JQuery

$(document).ready(function() { 
    $('#domainform').submit(function(){ 
     $.getJSON("includes/idna/idna.php", { 
      domain: $("input#idndomain").val() 
     }, function(data){ 
      $("div#result").html($('<b>' + data.encoded + '</b>')); 
      $('#idndomain').val(data.encoded); 
     }); 
     return true; 
    }); 
}); 

Так что я послав запрос idna.php, который кодирует имя домена и возвращает массив JSON:

{"encoded":"xn--caf-dma.ch"} 

Проблема в том, что форма отправляется с «исходным» значением, а не с возвращенным значением b y запрос json.

Вопрос: как «дождаться» результата json сначала, замените поле ввода закодированной строкой и отправьте?

ответ

7

Попробуйте связываясь с кнопкой отправки вместо формы и явный вызов submit обработчик формы в пределах успеха обратного вызова в JSon вызова:

$(document).ready(function() { 
      $('#submitButton').click(function(){ 

        // maybe disable the submit button once clicked? 
        $(this).attr('disabled', true); 
        $.getJSON("includes/idna/idna.php", { 
          domain: $("input#idndomain").val() 
        }, function(data){ 
          $("div#result").html($('<b>' + data.encoded + '</b>')); 
          $('#idndomain').val(data.encoded); 
          // now submit the form 
          $('#domainform').submit(); 
        }); 
        return false; 
      }); 
    }); 
+1

Будьте уверены, чтобы обеспечить больше, чем просто один клик, некоторые люди могли бы представить форму с возвратом или вкладкой> пробел/вкладка> возврат. – dylanfm

+0

Почему бы не связать с $ ("селектор"). Live ("click", function() {}); ? Всегда было лучше на всякий случай :) – Sam

+0

Я не думаю, что существует достаточно контекста, чтобы рекомендовать использовать 'live', это действительно необходимо, только если кнопка отправки будет заменена (что я не вижу, что происходит на основе вопроса) – karim79

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