【问题标题】:Match input value and array匹配输入值和数组
【发布时间】:2014-10-21 01:37:06
【问题描述】:

我对匹配输入值和数组感到困惑。

我有一个输入框,可以输入作者姓名:

<b>Author's name:</b> 
<input type="text"  name="authorName">

一共有三个作者,我把他们放在一个数组里:

var authorName =["a","b","c"];

下拉列表中有三本书与这些作者相匹配:

<b>Select Book:</b>
<select name="selectBook" id="bookName">
<option value="" selected="selected">-</option>
<option id="bookA"value="q">My Decade In The Premier League</option>
<option id="bookB"value="r">Harry Potter</option>
<option id="bookC"value="s">Twilight</option>
</select>

这里是一个文本区域,用于显示书籍的信息;

如果用户输入“a”并选择下拉列表“q”,则给出信息“x”;

如果用户输入“b”并选择下拉列表“r”,则给出信息“y”;

如果用户输入“c”并选择下拉列表“s”,则给出信息“z”;

<br>
<input type="button" value="RETRIEVE">
<br> 
<textarea name="infoBox"></textarea>

如果输入的名字不在数组中或与书名不匹配。

textarea 框会输出"author name is incorrect!"

我不知道该怎么做。

【问题讨论】:

  • 这个问题与上一个问题有何不同?
  • 因为我认为我在上一个中没有说清楚。所以答案不能解决问题

标签: javascript html arrays


【解决方案1】:

我认为这就是您要寻找的。提交答案后,它会检查该值是否在您的数组中以及它是否与书籍描述相匹配。然后返回是或否

var authorName =["a","b","c"];

$("#retrieve").click(function(){

  var selectedAuthor = $(".author-name").val();
  var selectedBook = $("#bookName").children(":selected").attr("id");;

  if( ($.inArray(selectedAuthor, authorName) > -1) && (selectedBook == "book-"+selectedAuthor) ) {

    $("#results").val("YEP ITS A MATCH");
  }else{
    $("#results").val("SORRY, NO MATCH");

  }

});

FIDDLE

更新

显示选定的书:

NEW FIDDLE

新更新 为书籍信息添加了一个单独的数组:

NEW FIDDLE 2

【讨论】:

  • 感谢您的回答。这显示了作者和书名是否匹配,但如果匹配,如何给出不同的书信息?我是javascript的大一新生。对不起
  • @MarkMao 没问题,我添加了一个新的小提琴,显示如果有匹配则选择了哪本书
  • 我明白了,但问题是还有另一个数组存储书籍信息(x,y,z),如果匹配它应该给出“x”或“y”或“z”作为结果。 ..非常感谢。
  • @MarkMao 好的,我创建了一个新的小提琴来做到这一点。您可以将 js 直接嵌入到 html 文件中,也可以创建一个单独的 js 文件并从 html 文件链接到它。
  • 非常感谢你!!
【解决方案2】:

下面的代码应该可以工作

          $(document).ready(function () {

        $("#RETRIEVE").click(
            function () {
                retrieve();
            }            
        );
    });

function retrieve() {
    var authorName =["a","b","c"];
    var text = $('#authorName').val();
    var drop= $('#bookName :selected').text();
  if ((authorName.indexOf(text) != -1) && $("#bookName").get(0).selectedIndex-1== $.inArray(text,authorName))

        $('#infoBox').val(drop);

    else        
       $('#infoBox').val("Incorrect name");


}

上面的 Jsfiddle 是http://jsfiddle.net/yzqqr8ws/

【讨论】:

  • 对不起,我错误地理解了你的问题。我现在就改正
  • 这与书的作者不匹配,它只检查作者姓名是否正确
猜你喜欢
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
相关资源
最近更新 更多