2012-02-18 50 views
0

我有这样的HTML代码的test.html如何在阵列添加/校验值与JavaScript

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript" src="jquery.js"></script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<script type="text/javascript"> 
    $(document).ready(function() { 
    var course_data;  
    $.get('exerc.xml', function(data) { 
    course_data = data;    
    var that = $('#courses'); 
    $('course', course_data).each(function() { 
    $('<option>').text($(this).attr('title')).appendTo(that); 
    }); 
    }, 'xml'); 

$('#courses').change(function() { 
    var val = $(this).val(); 
    var that = $('#times').empty(); 
    $('course', course_data).filter(function() { 
     return val == $(this).attr('title'); 
    }) 
    .find("lesson").each(function() { 
     $("#lesson").val($(this).text()); 
    }); 
}); 
}); 
</script> 

<script type="text/javascript"> 
function keyPressed(event, input) { 
    if (event.keyCode == 8) { 
       // Allow backspace 
    return true; 
    } 
       // Detect character code: event.which on Firefox, event.keyCode on IE 
    var char = event.which ? event.which : event.keyCode; 
      // Convert to string 
    char = String.fromCharCode(char); 
    var exerc = new Array(); 
    exerc = "1234 1234 1234"; 
    // Compare to character in match string and return result 
    return (exerc.charAt(input.value.length) == char); 
    } 
</script> 
</head> 

<body> 
<form method="post" action=""> 
<input type="text" size="90" id="lesson" /> 
</form> 
<form id="form2" name="form2" method="post" action=""> 
<input size="90" type="text" class="textarea" onkeypress="return keyPressed(event, this);" /> 
</form> 

<form name="form1"> 
<p>exercices 
    <select style="width:100px" id='courses'> 
    <option selected="selected">choose...</option> 
    </select> 
</form> 
</body> 
</html> 

这是我的xml文件exerc.xml

<?xml version="1.0" encoding="utf-8"?> 
<courses> 
    <course title="exercise 1"> 
     <lesson>1234 1234 1234</lesson> 
    </course> 
    <course title="exercise 2"> 
     <lesson>5678 5678 5678</lesson> 
    </course> 
    <course title="exercise 3"> 
     <lesson>9012 9012 9012</lesson> 
    </course> 
</courses> 

那么,第一个代码中有两个输入字段。在第一个输入中输入来自xml文件(解析器方法)的数据。这取决于从下拉菜单中选择。在第二次输入中,我使用了一个函数(keyPressed),它允许我输入第一个输入中描述的相同数据,但按顺序依次输入。第一项练习很适用。问题是我想用更多的练习。我添加了一个更多的练习像这样的阵列:

var exerc = new Array(); 
    exerc[0]= "1234 1234 1234"; 
    exerc[1] = "5678 5678 5678"; 
    exerc[2] = "9012 9012 9012"; 

我改变了第一个功能keyPressed,但它是行不通的。 Beybe它是完全错误的:

function keyPressed(event, input) { 
    if (event.keyCode == 8) { 
    return true; 
    } 
    var char = event.which ? event.which : event.keyCode; 
    char = String.fromCharCode(char); 
    var exerc = new Array(); 
     exerc[0]= "1234 1234 1234"; 
     exerc[1] = "5678 5678 5678"; 
     exerc[2] = "9012 9012 9012"; 
     for (i=0;i<exerc.length;i++){ 
     document.getElementById("courses").selectedIndex; 
     } 
    return (exers.charAt(input.value.length) == char); 
    } 

我使用这个练习就像一个游戏。我可以添加或从XML文件中删除练习,并学习提供密钥。也许这里很多人很愚蠢,但我觉得它很有趣。所以,我在这里堆叠。任何建议如何解决它?提前致谢。

+0

只是我的意见,但我会采取函数调用了标记和使用jQuery的:'$(“文本区域”)按键(函数(事件){的keyPressed(事件,这一点);}) ;' – 2012-02-20 12:32:48

+0

所以,这是另一种解决方案?它看起来像更复杂... – billaki 2012-02-20 12:51:12

+0

不是另一种解决方案,只是改善你的代码 - 我相信将所有代码从标记中移出,包括事件管理 - 把我在JavaScript代码库中记录的事件管理器放在里面,在标记中。 – 2012-02-20 13:06:26

回答

1

这是解决方案,如果有人有同样的问题!

var exerc = ["1234 1234 1234","5678 5678 5678","9012 9012 9012"]; 
for (i=0;i<exerc.length;i++){ 

var option=document.getElementById("courses").selectedIndex; 
} 

return (exerc[option - 1].charAt(input.value.length) == char);