【发布时间】:2017-02-13 08:10:40
【问题描述】:
前几天我在参加一个面试,公司给了我一个用 Javascript 解决的难题,但我无法完成。
您可以在此处查看代码:
$(document).ready(function(){
$("#phone").find("button").mouseup(function(event){
var button_pressed = $(event.currentTarget).data("value")
$("#result").val(t9($("#result").val(),button_pressed))
})
})
function t9(text,button_pressed){
// Write your code here
return text
}
#phone button{
height: 50px;
width: 75px;
}
#phone button span{
display: block;
margin-top: 5px;
font-size: 10px;
}
#result{
width: 225px;
height: 25px;
margin-left:2px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="phone">
<tr>
<td colspan="3">
<input type="text" id="result" />
</td>
</tr>
<tr>
<td>
<button data-value="1" class="key">1
<span>. , !</span>
</button>
</td>
<td>
<button data-value="2" class="key">2
<span>a b c</span>
</button>
</td>
<td>
<button data-value="3" class="key">3
<span>d e f</span>
</button>
</td>
</tr>
<tr>
<td>
<button data-value="4" class="key">4
<span>g h i</span>
</button>
</td>
<td>
<button data-value="5" class="key">5
<span>j k l</span>
</button>
</td>
<td>
<button data-value="6" class="key">6
<span>m n o</span>
</button>
</td>
</tr>
<tr>
<td><button data-value="7" class="key">7
<span>p q r s</span>
</button>
</td>
<td>
<button data-value="8" class="key">8
<span>t u v</span>
</button>
</td>
<td>
<button data-value="9" class="key">9
<span>w x y z</span>
</button>
</td>
</tr>
<tr>
<td><button data-value="*" class="key">*</button></td>
<td><button data-value="0" class="key">0</button></td>
<td><button data-value="#" class="key">#</button></td>
</tr>
</table>
请运行代码 sn -p
现在,
点击 2 -> 输出应该是 -> a
再次点击 2 -> 输出应该是 -> b
再次单击 2 -> 输出应为 -> c
点击 3 -> 输出应该是 -> c(+d) => cd
再次单击 3 -> 输出应为 -> c(+e) => ce
2-3 秒后单击 3 -> 输出应为 -> ce(+d) => ced
longpress 1 -> 输出应该是 -> ced(+1) => ced1
longpress 2 -> 输出应该是 -> ced1(+2) => ced12
长按 3 -> 输出应该是 -> ced12(+3) => ced123
最后当你..
点击 1 -> 输出应该是 -> ced123(+".") => ced123.
再次单击 1 -> 输出应为 -> ced123(+",") => ced123,
再次单击 1 -> 输出应为 -> ced123(+"!") => ced123!
对于这种与时间相关的程序,我找不到任何解决方案。如果您有足够的时间帮助我解决问题,我将不胜感激。如果您有任何指南或与此相关的任何文档,请提供给我..
【问题讨论】:
-
JS sn-p 给定了,必须用吗?
-
是的,它是在那段时间给出的,并且 javascrip 使用了 jQuery 2.1.1 你可以从这里去jsfiddle
-
必须遵循的另一件事是您只能在函数 t9 中执行代码
-
检测“长按”是相当困难的,如果你必须用鼠标启动它。您确定使用的事件是 mouseup 而不是 mousedown?
-
我觉得,你应该再试一次,关键是让一个按钮识别是不是长按
标签: javascript jquery asynchronous numbers dom-events