2009-11-02 42 views
5

Tôi phải mã hóa tên miền (IDNA) cho một công ty đăng ký cụ thể bằng cách sử dụng dấu trọng âm.Thay đổi trường nhập trước khi gửi

Tôi có một lĩnh vực đầu vào đơn giản:

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

chức năng jQuery My

$(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; 
    }); 
}); 

Vì vậy, tôi đang gửi một truy vấn đến idna.php mã hóa các tên miền và trả về một mảng json:

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

Vấn đề ở dạng biểu mẫu được gửi với giá trị 'gốc' chứ không phải giá trị được trả về b y truy vấn json.

Câu hỏi là: cách 'chờ' kết quả json trước, thay thế trường nhập bằng chuỗi được mã hóa và chúng gửi?

Trả lời

7

Hãy thử gắn vào nút gửi thay cho hình thức, và gọi một cách rõ ràng submit xử lý của hình thức bên trong gọi lại thành công cuộc gọi json của:

$(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

Hãy chắc chắn để cho phép nhiều hơn chỉ là một nhấp chuột, một số người có thể nộp một biểu mẫu có trả lại hoặc tab> dấu cách/tab> trả lại. – dylanfm

+0

tại sao không liên kết với $ ("selector"). ("Click", function() {}); ? Luôn luôn tìm thấy nó tốt hơn chỉ trong trường hợp :) – Sam

+0

Tôi không nghĩ rằng có đủ ngữ cảnh để khuyên bạn nên sử dụng 'live', nó thực sự chỉ cần nếu nút gửi được thay thế (mà tôi không thể thấy xảy ra dựa trên câu hỏi) – karim79

Các vấn đề liên quan