2017-06-18 82 views
-1

我正在编程一个网站,有什么功能是不用提的atm。我已经设置了一些jQuery代码来使用ajax将数据通过表单插入到相关的数据库中。之前,它应该检查一些事情,比如一个输入与我设置的数组的值相同,等等。在以下是我的代码,真的无法找到,这是什么hella是错误的。这个else if语句在jQuery中有什么问题?

// AJAX, CREATE CATEGORY FUNCTION 
$('#create_category_form').submit(function(event){ 
    // VALID COLORS 
    var valid_colors = ["249,95,110,.72", // STD RED 
         "155,39,175,.72", // PURPLE 
         "102,58,182,.72", // DEEP PURPLE 
         "33,149,242,.72", // BLUE 
         "95,124,138,.72", // BLUE GREY 
         "0,149,135,.72", // TEAL 
         "64,147,67,.72", // GREEN 
         "254,86,34,.72", // DEEP ORANGE 
         "254,151,0,.72", // ORANGE 
         "120,84,71,.72"]; // BROWN 

    var colorchooser_value = $('#cat-color-value').val(); 

    if($('#category_name').val().length === 0) { 

     $('.category-name').css('background','#FCCED3').focus(); 
     return false; 

    } else if($('#cat-color-value').val().inArray(colorchooser_value, $valid_colors) == -1) { 

     $('.category-name').css('background','#FCCED3').focus(); 
     return false; 

    } else { 

     event.preventDefault(); 
     $.ajax({ 
      type: 'GET', 
      url: '/functions/create_category.php', 
      data: $(this).serialize(), 
      success: function(data){ 
       // REFRESH FORM 
       $('#create_category_form')[0].reset(); 
       // CLOSE OVERLAYS 
       $('#create-category').toggleClass('toggleOverlay'); 
       togglePageoverlay(); 
       // SHOW INFO 
       $('#info-banner').addClass('toggleInfo'); 
       $('#info-banner .inner .innertext').html('Category was successfully created!'); 
       hideInfobannerDelayed(); 
      } 
     }); 

    } 

}); 

我希望有人能帮助我。有必要检查给定输入的值是否与数组值中的一个相匹配。提前致谢。

+0

如果我删除其他的如果部分,只是保持第一次检查工作正常,但如果我添加第二个检查颜色匹配的颜色在数组中,它将重新加载页面并在浏览器窗口中显示内容,而不向数据库中插入任何内容 –

+0

当有人说他们的网站的功能不需要提及时,我总是发现它可疑。如果不需要提及,请不要提及它。否则,它只是听起来像你正在做的事情,你不应该;) –

+0

如果你去浏览器的JavaScript控制台,你可以顺序运行'$('#cat-color-value')。val ().inArray(colorchooser_value,$ valid_colors)'所以你可以看到事情出错的地方。请告诉我们你从哪里开始获得你不期望的价值。 –

回答

0

基于jQuery.inArray documentation 你应该使用jQuery.inArray这样的:

$.inArray('value', array) // or jQuery.inArray('value', array) 

所以,你需要改变你的代码如下:

else if ($.inArray(colorchooser_value, valid_colors) == -1) 
    // ... 

相关SO问题:jQuery.inArray(), how to use it right?

+0

谢谢你的作品。爱你 –

+0

很高兴帮助。你可以将答案标记为正确的答案,以帮助未来的读者,愉快的编码。 –

+0

已经完成~~ –