j查询进度条不起作用
jQuery Progress Bar Not Working
我是jQuery新手,我正在尝试构建一个动态jQuery进度条。我需要做的是在页面上提供一系列复选框,以便当访问者选中或取消选中复选框时,它将增加或减少进度条上显示的值。此外,我需要在访问者达到最大金额(百分比)时提醒他们。任何帮助将不胜感激。下面的代码会将点击事件绑定到进度条,但它没有正确增加或减少,我的最大值似乎不起作用?
这是我所拥有的:
Javascript:
<head>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.18.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#budgetbar").progressbar({ value: 0 });
$(".option1").click(function () {
$("#budgetbar").progressbar({ value: 10 });
});
$(".option2").click(function () {
$("#budgetbar").progressbar({ value: 50 });
});
$(".option3").click(function () {
$("#budgetbar").progressbar({ value: 20 });
});
$(".option4").click(function () {
$("#budgetbar").progressbar({ value: 50 });
});
$("#budgetbar").progressBar({ max: 100, textFormat: 'fraction', callback: function(data) { if (data.running_value == data.value) { alert("Budget limit reached!"); } }} );
});
</script>
</head>
.HTML:
<body>
<div id="budgetbar"></div>
<div>
<input type="checkbox" class="option1" />Expense 1 - $100,000<br />
<input type="checkbox" class="option2" />Expense 2 - $500,000<br />
<input type="checkbox" class="option3" />Expense 3 - $200,000<br />
<input type="checkbox" class="option4" />Expense 4 - $500,000<br />
* Max Expenses - $1,000,000
</div>
尝试将进度条的值存储在变量上,这样您就可以增加或减少其值以进行正确的计算。
它将是这样的:
previousValue = 0;
$("#budgetbar").progressbar({
value: 10+previousValue
});
此外,您需要检查复选框是否已选中,而不是使用"单击"事件。尝试这样的事情
if($('#checkboxId').is(':checked'))
或者,当然,您需要在复选框中添加一个 ID。
希望对您有所帮助!
来吧,希望对您有所帮助。
干杯。
<script type="text/javascript">
$( document ).ready( function()
{
$( "#budgetbar" ).progressbar();
});
var currentProgress = 0;
function adjustProgress( checkbox )
{
if ( $( checkbox ).is( ":checked" ) )
{
currentProgress += parseInt( $( checkbox ).val() );
}
else
{
currentProgress -= parseInt( $( checkbox ).val() );
}
$( "#budgetbar" ).progressbar( "option" , "value" , currentProgress )
if ( currentProgress > 100 )
{
alert( "You have exceeded the maximum value of 100" );
}
}
</script>
<div id="budgetbar"/>
<div>
<input type="checkbox" class="option1" value="10" onclick="adjustProgress( this )"/>Expense 1 - $100,000<br/>
<input type="checkbox" class="option2" value="50" onclick="adjustProgress( this )"/>Expense 2 - $500,000<br/>
<input type="checkbox" class="option3" value="20" onclick="adjustProgress( this )"/>Expense 3 - $200,000<br/>
<input type="checkbox" class="option4" value="50" onclick="adjustProgress( this )"/>Expense 4 - $500,000<br/>
* Max Expenses - $1,000,000
</div>
如果将值分配给input
复选框,则可以大大简化代码:
<input type="checkbox" class="option" value="10"/> Expense 1 - $100,000<br />
<input type="checkbox" class="option" value="50"/> Expense 2 - $500,000<br />
<input type="checkbox" class="option" value="20"/> Expense 3 - $200,000<br />
<input type="checkbox" class="option" value="50"/> Expense 4 - $500,000<br />
这样,您就不必以不同的方式处理每个复选框。 相反,您可以对所有选项使用单个处理程序。 这使得调试和代码维护变得更加简单。
其次,当每个选项更改时,您希望将总值分配给progressbar
,而不仅仅是单击的选项的值。 使用 change
而不是 click
,因为这只会在复选框更改其状态时触发。 (我知道,差别很小)。
// The only handler you need:
$('.option').on('change', function() {
// The total
var total = 0;
// Sum the value of all checked checkboxes
$('.option:checked').each(function() {
total += parseInt($(this).val());
});
// Assign the value using the correct method:
$("#budgetbar").progressbar("value", total );
});
此外,您在调用中使用progressBar
来设置参数(请注意大写字母 B)。 正确的名称是 progressbar
。
示例:http://jsfiddle.net/DjWCz/2/
HTML:(注意类名更改和值添加)
<input type="checkbox" class="option" value="10"/> Expense 1 - $100,000<br />
<input type="checkbox" class="option" value="50"/> Expense 2 - $500,000<br />
<input type="checkbox" class="option" value="20"/> Expense 3 - $200,000<br />
<input type="checkbox" class="option" value="50"/> Expense 4 - $500,000<br />
脚本:
<script type="text/javascript">
$("#budgetbar").progressbar({
value: 0,
max: 100,
textFormat: 'fraction',
complete: function(event, ui) {
alert("Budget limit reached!");
}
});
$('.option').on('change', function() {
var total = 0;
$('.option:checked').each(function() {
total += parseInt($(this).val());
});
$("#budgetbar").progressbar("value", total );
});
</script>
您可以使用 jQuery UI 进度条更改 jQuery UI 进度条的值
$("#budgetbar").progressbar("option", "value", 25);
这仅将值设置为 25(不增加 25)。获取可以使用的值
$("#budgetbar").progressbar("option", "value");
而且您可能需要检查复选框是否已选中:-)
我会这样做(未经测试)
var $budgetbar = $("#budgetbar"); // It's no good to repeat selections
$(".option1").click(function () {
var thisValue = 25, // This checkbox' value
currentValue = $budgetbar.progressbar("option", "value"),
newValue;
if($(this).is(':checked')) {
newValue = currentValue + thisValue; // add
} else {
newValue = currentValue - thisValue; // subtract
}
$budgetbar.progressbar("option", "value", newValue)
});
编辑,警报(可能有更好的方法):
$budgetbar.bind("progressbarchange", function(event, ui) {
var value = $budgetbar.progressbar("option", "value");
if (value > 100) {
alert("You're over 100");
}
});
- o数据扩展查询在SystemUserRolesSet上不起作用
- 在node.js-mysql中执行UPDATE查询不起作用
- 自定义查询在Wordpress页面中不起作用
- j查询点击功能在手风琴菜单链接上不起作用
- j查询排序不起作用
- j查询动画重置后事件不起作用
- j查询单击导航不起作用
- Jquery数组查询不起作用
- php中的mysql查询不起作用,但它在另一个php文件中起作用
- 打印的介质查询不起作用
- 多个FusionTables查询不起作用
- j查询突出显示效果不起作用
- j查询页面重定向在按钮单击时不起作用
- 将查询选择器保存在要追加的变量中不起作用
- jquery .height() 在媒体查询中使用百分比高度时不起作用
- j查询克隆表单在同一页面中不起作用两次
- Ms CRM中的Javascript(带有odata查询)不起作用
- j查询指定任务不起作用
- Ng-重复在资源查询后不更新 - $apply() 不起作用
- MySQL 查询的预先准备的列名不起作用