2014-05-19 34 views
0

我的PHP視圖文件中有一個JS函數。我想要做的是在函數驗證數據庫中不存在輸入時啓用按鈕。因此,這裏是我的功能:獲取列表使用foreach在php codeigniter中使用foreach

var name = 0; 
$("#edit-name").on("change", edit_name); 

function edit_name() { 
    if ($('#edit-name').val()== ""){ 
     $('#edit-name').addClass('required'); 
     $('#warning').html('Please fill required input.'); 
     name = 0; 
    } 

    else { 
     <?php foreach ($name_list as $list) { ?> 
      if ($('#edit-name').val() == '<?php echo $list->name ?>') { 
       name = 0; 
       $('#warning').html('Name already exists'); 
      } 

      else { 
       $('#warning').html(''); 
       name = 1; 
      } 
     <?php } ?> 
    } 

    enableButton(); 
} 

function enableButton(){ 
    if (name == 1) 
     document.getElementById('edit-btn').disabled = false; 
    else 
     document.getElementById('edit-btn').disabled = true; 
} 

我不知道什麼是錯誤的,但即使輸入是正確的,我的代碼無法正常工作:它的工作原理時,它會檢查是否存在輸入與否。但即使我輸入一個新名字,按鈕也不會發生任何變化。當我輸入現有名稱時,警告不會出現。

回答

1

看看你生成的HTML代碼比你看到你的錯誤。

如果具有例如數組[ 「名稱」=> 「測試」],[ 「名稱」=> 「test2的」]比查看生成以下HTML:

 if ($('#edit-name').val() == 'test') { 
      name = 0; 
      $('#warning').html('Name already exists'); 
     } 

     else { 
      $('#warning').html(''); 
      name = 1; 
     } 


     if ($('#edit-name').val() == 'test1') { 
      name = 0; 
      $('#warning').html('Name already exists'); 
     } 

     else { 
      $('#warning').html(''); 
      name = 1; 
     } 

你看「其他「總是如此。

你需要寫:

<? 
$stringarray = ""; 

foreach($name_list as $list){ 
    $stringarray .= '"'.$list->name.'",'; 
} 

// Del last , 
$stringarray = substr($stringarray,0,-1); 
?> 

var names = [<?php echo $stringarray;?>]; 
if (names.indexOf($('#edit-name').val()) != -1) { 
      name = 0; 
      $('#warning').html('Name already exists'); 
     }else { 
      $('#warning').html(''); 
      name = 1; 
     } 
+0

它的作品!謝謝! – achll