所以,我对数组来说比较新。我尝试用一些变化来解决这个问题。
我尝试做的事情的基础是标题,但我会尝试更详细地解释。
我有一系列PDF,每个PDF都会输出供选择。每个PDF都有一个数组来表示它,该数组包含用户可以选择答案的答案,以指定哪个PDF适合他们的需求。
我已经建了一个表格 -
<form class="form form-vertical specifier" method="post">
<div class="control-group">
<div class="input-append">
<span class="add-on">Q1</span>
</div>
<label class="control-label">What is the Sub-Floor?</label>
<select name="subFloor">
<option value="">Please Choose</option>
<option value="1a">Cementious Screed</option>
<option value="1b">Anhydrite/Calcium Sulphate Screeds</option>
<option value="1c">Timber/Chipboard</option>
<option value="1d">Steel</option>
<option value="1f">Selecta Screenbooard</option>
<option value="1e">Any Other?</option>
</select>
</div>
<div class="control-group">
<div class="input-append">
<span class="add-on">Q2</span>
</div>
<label class="control-label">Is there a weight issue?</label>
<select name="weight">
<option value="">Please Choose</option>
<option value="2a">Yes</option>
<option value="2b">No</option>
</select>
</div>
<div class="control-group">
<div class="input-append">
<span class="add-on">Q3</span>
</div>
<label class="control-label">Is tehre a height issue?</label>
<select name="height">
<option value="">Please Choose</option>
<option value="3a">Yes</option>
<option value="3b">No</option>
</select>
</div>
<div class="control-group">
<div class="input-append">
<span class="add-on">Q4</span>
</div>
<label class="control-label">Is there under-floor heating?</label>
<select name="heating">
<option value="">Please Choose</option>
<option value="4a">Yes</option>
<option value="4b">No</option>
</select>
</div>
<div class="control-group">
<div class="input-append">
<span class="add-on">Q5</span>
</div>
<label class="control-label">What is the Sub-Floor</label>
<select name="damp">
<option value="">Please Choose</option>
<option value="5a">Yes</option>
<option value="5b">No</option>
</select>
</div>
<div class="control-group">
<div class="input-append">
<span class="add-on">Q6</span>
</div>
<select name="acoustic">
<option value="">Please Choose</option>
<option value="6a">Yes</option>
<option value="6b">No</option>
</select>
</div>
<input type="submit" name="submit" >
</form>
表单值表示问题编号,然后是可以在数组中关联的唯一字母。
数组看起来像这样 -
$pdfs = array(
array('pdf01', 'a', 'a', 'a', 'b', 'a', 'a'),
array('pdf02', 'a', 'a', 'a', 'b', 'a', 'a'),
array('pdf03', 'a', 'a', 'a', 'a', 'b', 'a'),
array('pdf04', 'a', 'a', 'a', 'a', 'a', 'a'),
array('pdf05', 'a', 'b', 'b', 'a', 'b', 'b'),
array('pdf06', 'c', 'a', 'a', 'b', 'b', 'a'),
array('pdf07', 'a', 'a', 'a', 'b', 'b', 'a'),
array('pdf08', 'f', 'b', 'b', 'b', 'b', 'b'),
array('pdf09', 'f', 'b', 'b', 'b', 'b', 'b'),
array('pdf10', 'a', 'b', 'b', 'b', 'a', 'b'),
array('pdf11', 'a', 'b', 'a', 'b', 'a', 'b'),
array('pdf12', 'b', 'b', 'b', 'a', 'b', 'b'),
array('pdf13', 'g', 'b', 'b', 'a', 'a', 'b'),
array('pdf14', 'a', 'b', 'b', 'a', 'a', 'b'),
array('pdf15', 'd', 'a', 'a', 'b', 'b', 'a')
);`
如果输入值与数组中的内容匹配,我需要能够输出PDF名称。
任何帮助或推动正确的方向都将非常感激。
fyi,我试图保持这种动态,
$('selector').change(function() {
})
是,我假设,我需要的方法。
答案 0 :(得分:0)
我创建了一个json而不是一个数组。
的一些方面 jsonObj = { aaabaa: 'pdf01', aaabab: 'pdf02', .... }
然后你可以把你的答案拼凑成一个字符串并在json对象中查找:
var pdf = jsonObj[answerString]
要查找与非完整字符串匹配的所有PDF,它会变得有点复杂:
var regEx = /aa\wb\w/
(读作a,a,未设置,b,未设置)。
要动态构造正则表达式,首先要将其创建为带有转义反斜杠的字符串:在这种情况下为var regExString = "aa\\wb\\w"
。然后将其提供给新的RegExp对象:var regEx = new RegExp(regExString)
遍历您的对象并检查键:
var result = [];
for (key in jsonObj) {
if (regEx.test(key)) {
result.push(jsonObj[key]);
}
}
然后你终于有一个数组;)但只有有效的PDF。
但是通过这种方法,您将失去快速有效解决方案的优势。您也可以遍历您的数组,然后只选择有效的元素。使用此解决方案只需要少一点代码。
JSFiddle用于演示。