如何在按钮单击事件上获取输入的当前值
how to get the current values of an input on button click event
我有一堆 div 具有相同的功能,我正在尝试为它们编写一个函数。
基本上它们有一个预定值和一个用户输入值,需要将它们相乘。
我查看了很多其他问题,this 是我能找到的最接近的问题。几乎完全正确,但是 none 这些答案有效。
任何帮助都会很棒。提前致谢!
<div>
<label>enter value for multiple here</label>
<input type="text" class="multiple" factor="foo1"/>
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
<label>enter value for multiple here</label>
<input type="text" class="multiple" factor="foo2"/>
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
</div>
这是 JS:
$('.mulitplyBtn').click(function() {
var factor = $(this).closest('attr.factor').val();
var multiple = $(this)closest('.multiple').val();
answer = (factor * multiple);
};
在第一行你使用了 " 和 ' 尝试使用相同的引号(我的意思是使用 ".multiplyBtn" 或 '.multiplyBtn')
第二次,第 3 行,您在调用 .multiple 时没有使用任何引号。所以把它变成那种格式:var multiple = $(this)closest('.multiple').val()
让我知道结果
attr.factor
不是这样的。
像这样尝试:
$('.multiplyBtn').click(function() {
var container = $(this).prev('.multiple'); //don't forget the "dot"
var multiple = container.val();
var factor = container.attr('factor'); //since it is the same container.
var answer = (factor * multiple); //what exactly are you tryin to multiply?
};
您至少有两个错别字并且使用了错误的 jQuery 函数。
错别字:
- $('.mulitplyBtn') 应该是 $('.mulitplyBtn')
- $(this)closest 应该是 $(this).closest
函数错误:
closest() 搜索 parent,这里唯一的 parent 是没有 class 的 DIV。您可能想要的是使用 parent() 上升到 DIV,然后使用 find() 在 parent 的 children 中搜索特定元素:
$(this).parent().find('.multiple').val()
这可行:
$('.multiplyBtn').click(function() { // you had multiplyBtn spelled wrong here
var cur = $('.multiplyBtn').index($(this)); // get index of clicked btn
var factor = $('.multiple').eq(cur).data('factor'); // get factor from matching input
var multiple = $('.multiple').eq(cur).val(); // get value from matching input
answer = (Number(factor) * Number(multiple)); // make sure both are numbers then multiply
alert(answer);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<label>enter value for multiple here</label>
<input type="text" class="multiple" data-factor="4" />
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
<br>
<label>enter value for multiple here</label>
<input type="text" class="multiple" data-factor="7" />
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
</div>
我有一堆 div 具有相同的功能,我正在尝试为它们编写一个函数。
基本上它们有一个预定值和一个用户输入值,需要将它们相乘。
我查看了很多其他问题,this 是我能找到的最接近的问题。几乎完全正确,但是 none 这些答案有效。
任何帮助都会很棒。提前致谢!
<div>
<label>enter value for multiple here</label>
<input type="text" class="multiple" factor="foo1"/>
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
<label>enter value for multiple here</label>
<input type="text" class="multiple" factor="foo2"/>
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
</div>
这是 JS:
$('.mulitplyBtn').click(function() {
var factor = $(this).closest('attr.factor').val();
var multiple = $(this)closest('.multiple').val();
answer = (factor * multiple);
};
在第一行你使用了 " 和 ' 尝试使用相同的引号(我的意思是使用 ".multiplyBtn" 或 '.multiplyBtn')
第二次,第 3 行,您在调用 .multiple 时没有使用任何引号。所以把它变成那种格式:var multiple = $(this)closest('.multiple').val()
让我知道结果
attr.factor
不是这样的。
像这样尝试:
$('.multiplyBtn').click(function() {
var container = $(this).prev('.multiple'); //don't forget the "dot"
var multiple = container.val();
var factor = container.attr('factor'); //since it is the same container.
var answer = (factor * multiple); //what exactly are you tryin to multiply?
};
您至少有两个错别字并且使用了错误的 jQuery 函数。
错别字:
- $('.mulitplyBtn') 应该是 $('.mulitplyBtn')
- $(this)closest 应该是 $(this).closest
函数错误:
closest() 搜索 parent,这里唯一的 parent 是没有 class 的 DIV。您可能想要的是使用 parent() 上升到 DIV,然后使用 find() 在 parent 的 children 中搜索特定元素:
$(this).parent().find('.multiple').val()
这可行:
$('.multiplyBtn').click(function() { // you had multiplyBtn spelled wrong here
var cur = $('.multiplyBtn').index($(this)); // get index of clicked btn
var factor = $('.multiple').eq(cur).data('factor'); // get factor from matching input
var multiple = $('.multiple').eq(cur).val(); // get value from matching input
answer = (Number(factor) * Number(multiple)); // make sure both are numbers then multiply
alert(answer);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<label>enter value for multiple here</label>
<input type="text" class="multiple" data-factor="4" />
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
<br>
<label>enter value for multiple here</label>
<input type="text" class="multiple" data-factor="7" />
<button type="button" class="multiplyBtn">Click here to multiply these numbers</button>
</div>